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

xiaoxiao2021-02-28  76

import pandas as pd import numpy as np column_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.shape from sklearn.model_selection import train_test_split x_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 StandardScaler from sklearn.linear_model import LogisticRegression from sklearn.linear_model import SGDClassifier ss = 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_report print('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 71 avg / total 0.99 0.99 0.99 171 Accuracy 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 71 avg / total 0.98 0.98 0.98 171

转载请注明原文地址: https://www.6miu.com/read-35647.html

最新回复(0)