python机器学习与实战中运行代码出现警告的处理

来源:互联网 发布:c语言函数大全 chm 编辑:程序博客网 时间:2024/06/08 07:09
import pandas as pdimport numpy as npcolumn_names = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell shape', 'Marginal Adhesion','Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin', 'Normal Nucleoli', 'Mitoses', 'Class']data = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data', names=column_names)#print(data)data = data.replace(to_replace='?', value=np.nan)#print(data)data = data.dropna(how='any')#print(data)data.shapefrom sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(data[column_names[1:10]], data[column_names[10]], test_size=0.25, random_state=33)print(y_train.value_counts())print(y_test.value_counts())from sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LogisticRegressionfrom sklearn.linear_model import SGDClassifierss = StandardScaler()x_train = ss.fit_transform(x_train)x_test = ss.transform(x_test)lr = LogisticRegression()
sgdc = SGDClassifier()lr.fit(x_train, y_train)lr_y_predict = lr.predict(x_test)sgdc.fit(x_train, y_train)sgdc_y_predict = sgdc.predict(x_test)from sklearn.metrics import classification_reportprint('Accuracy of LR Classifier:', lr.score(x_test, y_test))print(classification_report(y_test, lr_y_predict, target_names=['Benign', 'Malignant']))print('Accuracy of SGD Classifier:', sgdc.score(x_test, y_test))print(classification_report(y_test, sgdc_y_predict, target_names=['Benign', 'Malignant']))

运行上面程序会出现一下警告:

Warning (from warnings module):  File "D:\Python362\lib\site-packages\sklearn\linear_model\stochastic_gradient.py", line 84    "and default tol will be 1e-3." % type(self), FutureWarning)FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.
翻看了官方文档是版本升级的问题:

 max_iter : int, optional        The maximum number of passes over the training data (aka epochs).        It only impacts the behavior in the ``fit`` method, and not the        `partial_fit`.        Defaults to 5. Defaults to 1000 from 0.21, or if tol is not None.        .. versionadded:: 0.19

在0.19的版本中,SDGClassifier默认的迭代次数是5,0.21版本默认的迭代次数是1000,要想不出现warnings只需手动设定SDGClassifier的迭代次数,代码如下:

sgdc = SGDClassifier(max_iter=5)
运行修改后的代码最终结果如下:

Accuracy of LR Classifier: 0.988304093567             precision    recall  f1-score   support     Benign       0.99      0.99      0.99       100  Malignant       0.99      0.99      0.99        71avg / total       0.99      0.99      0.99       171Accuracy of SGD Classifier: 0.982456140351             precision    recall  f1-score   support     Benign       0.99      0.98      0.98       100  Malignant       0.97      0.99      0.98        71avg / total       0.98      0.98      0.98       171




阅读全文
0 0