对于许多机器学习算法,你提供的特定数据表示非常重要。 首先对数据进行缩放,然后手动合并特征,再利用无监督机器学习来学习特征。 因此,大多数机器学习应用不仅需要应用单
对于许多机器学习算法,你提供的特定数据表示非常重要。
- 首先对数据进行缩放,然后手动合并特征,再利用无监督机器学习来学习特征。
- 因此,大多数机器学习应用不仅需要应用单个算法,而且还需要将许多不同的处理步骤和机器学习模型链接在一起。
举一个例子来说明模型链的重要性。
我们知道,可以通过使用 MinMaxScaler 进行预处理来大大提高核 SVM 在 cancer 数据集上的性能。
下面这些代码实现了划分数据、计算最小值和最大值、缩放数据与训练 SVM:
from sklearn.datasets import load_breast_cancer
from sklearn.svm import SVC
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
#加载和划分数据
cancer = load_breast_cancer()
X_train,X_test,y_train,y_test = train_test_split(cancer.data,cancer.target,random_state=0)
#数据缩放
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
#在缩放后的数据上学习SVM
svc = SVC().fit(X_train_scaled,y_train)
X_test_scaled = scaler.transform(X_test)
print("Test score:{}".format(svc.score(X_test_scaled,y_test)))
'''
`Test score:0.972027972027972`
'''
1、用预处理进行参数选择
现在,假设我们希望利用 GridSearchCV 找到更好的 SVC 参数。 我们应该怎么做?一种简单的方法可能如下所示:
from sklearn.model_selection import GridSearchCV
#网格参数
param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100],
'gamma': [0.001, 0.01, 0.1, 1, 10, 100]}
#创建GridSearchCV实例,折数为五折
grid = GridSearchCV(SVC(),param_grid,cv=5)
#拟合
grid.fit(X_train_scaled,y_train)
#打印最优参数
print("Best parammetes:{}".format(grid.best_params_))
print("Best cross-validation accuracy:{:.3f}".format(grid.best_score_))
print("Test score:{:.3f}".format(grid.score(X_test_scaled,y_test)))
'''
```
Best parammetes:{'C': 1, 'gamma': 1}
Best cross-validation accuracy:0.981
Test score:0.972
```
'''