專門用於機器學習的模塊。分類,迴歸,無監督,數據降維,數據預處理等等,包含了常見的大部分機器學習方法。
使用前安裝該模塊:使用pycharm可以進入 Settings-> Project ->Project Interpreter -> 點擊右側,綠色加號
在出來的搜索框輸入sklearn-> 點擊下面的Install Package 等待提示安裝成功即可。
代碼(可直接運行)
from sklearn.datasets import load_iris # 導入鳶尾花數據
# from sklearn.cross_validation import train_test_split
# 上面的被棄用了 新的模塊sklearn.model_selection,將以前的sklearn.cross_validation, sklearn.grid_search 和
# sklearn.learning_curve模塊組合到一起
from sklearn.model_selection import train_test_split
# 鳶尾花
iris = load_iris()
print("鳶尾花原數據\n", iris)
print("數據大小\n", len(iris['data']))
# 分爲訓練數據 和測試數據 比例爲百分之20
train_data, test_data, train_target, test_target = train_test_split(iris.data, iris.target, test_size=0.2,
random_state=1)
# 建模
from sklearn import tree # 決策樹
# 模型訓練
clf = tree.DecisionTreeClassifier(criterion='entropy') # 衡量分裂質量的功能。 支持的標準是基尼雜質的“gini”和信息增益的“entropy”。
clf.fit(train_data, train_target) # 簡單來說,就是求得訓練集X的均值啊,方差啊,最大值啊,最小值啊這些訓練集X固有的屬性。
# 可以理解爲一個訓練過程進行預測
y_pred = clf.predict(test_data) # 訓練後返回預測結果,是標籤值
# 驗證
from sklearn import metrics
# 驗證真實的值 打印準確度 準確分類得分
print("準確度\n", metrics.accuracy_score(y_true=test_target, y_pred=y_pred))
# 第二種驗證 混淆矩陣 橫軸表示實際值 縱軸表示預測值 計算混淆矩陣以評估分類的準確性
print("混淆矩陣\n", metrics.confusion_matrix(y_true=test_target, y_pred=y_pred))
# [[11 0 0]
# [ 0 12 1] 有1表示預測錯誤 最好的情況是是一個對角矩陣
# [ 0 0 6]]
# 打印決策樹
with open('tree.dot', 'w') as fw:
tree.export_graphviz(clf, out_file=fw, feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True) # 以DOT格式導出決策樹。
#安裝graphviz
#生成PDF可視化圖像
import pydotplus
graph = pydotplus.graph_from_dot_file("tree.dot")
graph.write_pdf("iris2.pdf")
代碼中提到的額外安裝graphviz(較爲特殊相對於其他python模塊)
下載graphviz.msi安裝包進行安裝 (百度雲) 提取碼:88jc
將安裝路徑下的bin目錄路徑添加到環境變量的path
調用CMD進行測試,輸入dot -version 成功則如下圖
然後再運行上面的代碼
會生成Dot文件tree.dot 這其實就是決策樹 但是不方便解讀
我們利用安裝的graphviz進行轉化爲pdf 圖示 所以還會生成iris.pdf
打開iris.pdf 如圖:
小結:
- train_test_split(iris.data,iris.target,test_size=0.2,random_state=1) 該方法注意移植到了model_selection 其中測試比例爲20%
- tree.DecisionTreeClassifier(criterion='entropy') 該函數是指定衡量分裂質量標準 有:gini(基尼) 和 entropy(增益)
- fit(train_data,train_target) 該函數可以理解爲訓練過程 求得均值,方差,最大值等固有屬性
- predict(test_data) 該函數顧名思義就是返回預測結果,就是標籤值
- metrics.accuray_score(y_true=test_target,y_pred=y_pred) 驗證測試數據 獲取準確分類得分 方式一
- metrics.confusion_matrix(y_true=test_target,y_pred=y_pred) 驗證測試數據 獲取準確分類得分 方式二
- tree.export_graphviz(
clf, out_file=fw, feature_names=iris.feature_names, class_names=iris.target_names, filled=True, rounded=True, special_characters=True) 以Dot格式輸出決策樹文件
- pydotplus.graph_from_dot_file("tree.dot") 指定被圖形化文件
- write_pdf("iris.pdf") 生成PDF
注意:安裝完graphviz後一定要重啓一下IDE(pycharm)