1.参考:https://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf?utm_medium=social&utm_source=qq
LSSVM调参
(1)数据范围:归一化,推荐是到[0,1]或者[-1,1]
(2)模型的选择:
RBF:第一选择,能将数据映射到高维空间,特定的C下的线性核,与某些参数下的RBF效果是一样的,除此之外,sigmoid核函数与特定参数下的RBF也有相同的效果。
另外,对于多参数,多项式核的参数比RBF多。
但是,当特征的数量非常多的时候,用线性核。
(3)交叉验证和网格搜索:
目标是确定C,gamma对于未知的预测数据是准确的。
注意,得到很高的训练集准确度是没有用的。
常见策略是,将训练集分为两部分,一部分作为训练集,一部分作为测试集。测试集的准确度将更能反应在独立集上的效果。这个过程就是交叉验证。
v折交叉验证就是,将数据集分为v份,轮流将v-1份作为训练集,剩下一份作为测试集。因此,整个训练集的每个实例被预测一次,因此交叉验证精度是正确分类的数据的百分比。交叉验证将避免过拟合的问题。
推荐使用在交叉验证的过程中使用网格搜索,通过变化(C,gamma)的值,经过尝试发现C和gamma的指数增长序列是一个好的找最优值的试验方法。
推荐首先使用粗格栅。
(4)讨论一下样本数和特征数:
当样本数<<特征数,使用线性核。比如38个样本,1000多个特征时。效果好。
当样本数和特征数都很大,比如样本有两千多个,特征有四千多个,线性核比RBF效率更高。效果好。
当样本数>>特征数,比如样本有50000+,特征有40+,使用-s2线性核效率更高。即使这样,也效果一般。
2. sklearn中的回归模型包的使用
参考:https://blog.csdn.net/Yeoman92/article/details/75051848
(1)决策树回归
from sklearn import tree
model_DecisionTreeRegressor = tree.DecisionTreeRegressor()
(2)线性回归
from sklearn import linear_model
model_LinearRegression = linear_model.LinearRegression()
(3)SVM回归
from sklearn import svm
model_SVR = svm.SVR(kernel = )'linear','poly','rbf'
(4)KNN回归
from sklearn import neighbors
model_KNeighborsRegressor = neighbors.KNeighborsRegressor()
(5)随机森林回归
from sklearn import ensemble
model_RandomForestRegressor = ensemble.RandomForestRegressor(n_estimators=20)#这里使用20个决策树
(6)Adaboost回归
from sklearn import ensemble
model_AdaBoostRegressor = ensemble.AdaBoostRegressor(n_estimators=50)#这里使用50个决策树
(7)GBRT回归
from sklearn import ensemble
model_GradientBoostingRegressor = ensemble.GradientBoostingRegressor(n_estimators=100)#这里使用100个决策树
(8) Bagging回归
from sklearn.ensemble import BaggingRegressor
model_BaggingRegressor = BaggingRegressor()
(9)ExtraTree极端随机树回归
from sklearn.tree import ExtraTreeRegressor
model_ExtraTreeRegressor = ExtraTreeRegressor()
(10)拟合:
name.fit(X_TRAIN,Y_TRAIN)
(11)预测
y_predict =name.predict(X_test)
(12)返回预测集的R2
name.score(x_test,y_test)