当前位置 : 主页 > 编程语言 > 其它开发 >

算法链与管道(上):建立管道

来源:互联网 收集:自由互联 发布时间:2022-06-03
对于许多机器学习算法,你提供的特定数据表示非常重要。 首先对数据进行缩放,然后手动合并特征,再利用无监督机器学习来学习特征。 因此,大多数机器学习应用不仅需要应用单

对于许多机器学习算法,你提供的特定数据表示非常重要。

  • 首先对数据进行缩放,然后手动合并特征,再利用无监督机器学习来学习特征。
  • 因此,大多数机器学习应用不仅需要应用单个算法,而且还需要将许多不同的处理步骤和机器学习模型链接在一起。

举一个例子来说明模型链的重要性。
我们知道,可以通过使用 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
  ```
  '''

网友评论