- 在運行集成學習的多數投票分類代碼時,出現錯誤
from sklearn import datasets
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import VotingClassifier
iris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.target
clf1 = LogisticRegression(solver='lbfgs', multi_class='multinomial', random_state=1)
clf2 = RandomForestClassifier(n_estimators=50, random_state=1)
clf3 = GaussianNB()
ensemble_clf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('gnb',clf3)], voting='hard')
for clf, label in zip([clf1, clf2, clf3, ensemble_clf], ['Logistic Regression', 'Random Forest', 'naive Bayes', 'Ensemble']):
scores = cross_val_score(clf, X, y, cv = 5, scoring='accuracy')
# scoring里面的有效參數有['accuracy', 'adjusted_rand_score', 'average_precision', 'f1', 'f1_macro', 'f1_micro', 'f1_samples',
# 'f1_weighted', 'neg_log_loss', 'neg_mean_absolute_error', 'neg_mean_squared_error', 'neg_median_absolute_error',
# 'precision', 'precision_macro', 'precision_micro', 'precision_samples', 'precision_weighted',
# 'r2', 'recall', 'recall_macro', 'recall_micro', 'recall_samples', 'recall_weighted', 'roc_auc']
print('Accuracy: %0.2f (+/- %0.2f) ------- %s' %(scores.mean(), scores.std(), label))
- 運行結果
- 出錯原因
如果遇到錯誤:ImportError: DLL load failed: 找不到指定的模塊
出現錯誤原因:安裝包的來源問題,也可以理解為包版本兼容問題,有的包使用官方出版,有的包使用whl文件安裝
解決方案:將所有包都統一來源,要么全部使用官方出版的包,要么全部使用whl里面的包,問題就解決了
解決方法
- (1)先卸載原始版本Scikit-Learn,Numpy和Scipy
pip uninstall scikit-learn
pip uninstall numpy
pip uninstall scipy
- (2) 安裝自己電腦對應的版本
whl包下載:https://www.lfd.uci.edu/~gohlke/pythonlibs/# 下載需要的scikit-learn,numpy,scipy三個whl文件
然后依次安裝numpy,scipy和scikit-learn的輪子
pip install numpy-1.16.5+mkl-cp36-cp36m-win_amd64.whl
pip install scipy-1.3.3-cp36-cp36m-win_amd64.whl
pip install scikit_learn-0.21.3-cp36-cp36m-win_amd64.whl
- 重新運行上述代碼 成功運行
參考資料1:https://www.cnblogs.com/hamish26/p/10985139.html
參考資料2:https://blog.csdn.net/a593651986/article/details/72178463