scikit-learn的簡單使用

專門用於機器學習的模塊。分類,迴歸,無監督,數據降維,數據預處理等等,包含了常見的大部分機器學習方法。

官網:https://scikit-learn.org


使用前安裝該模塊:使用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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章