日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[scikit-learn 机器学习] 8. 非线性分类和决策树

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [scikit-learn 机器学习] 8. 非线性分类和决策树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 特征選擇標準
    • 2. 網頁廣告預測
      • 2.1 數量處理
      • 2.2 網格搜索模型參數
    • 3. 決策樹優缺點

本文為 scikit-learn機器學習(第2版)學習筆記

相關知識:《統計學習方法》決策樹(Decision Tree,DT)

1. 特征選擇標準

  • 信息增益,得知特征X的信息而使得類Y的信息的不確定性減少的程度。
  • 信息增益比,信息增益的占比,選擇大的特征
  • 基尼系數,表示經特征 A 分割后集合 D 的不確定性,選擇基尼系數小的特征

2. 網頁廣告預測

import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report from sklearn.pipeline import Pipeline from sklearn.model_selection import GridSearchCVdf = pd.read_csv('./ad.data', header=None) df.head(10)


數據前3列為廣告圖片的寬高、長寬比,余下特征為文字變量出現頻率的編碼特征
最后一列為標簽列,是否為廣告

2.1 數量處理

  • 分離標簽
y = df[len(df.columns)-1] y 0 ad. 1 ad. 2 ad. 3 ad. 4 ad.... 3274 nonad. 3275 nonad. 3276 nonad. 3277 nonad. 3278 nonad. Name: 1558, Length: 3279, dtype: object y = [1 if e == 'ad.' else 0 for e in y]
  • 特征提取
X = df.drop(df.columns[len(df.columns)-1], axis=1) X

  • 填補?無效數據
X.replace(to_replace=' *\?', value=-1,regex=True,inplace=True) X

2.2 網格搜索模型參數

X_train, X_test, y_train, y_test = train_test_split(X, y)pipeline = Pipeline([('clf', DecisionTreeClassifier(criterion='entropy')) ]) parameters = {'clf__max_depth': (150, 155, 160),'clf__min_samples_split': (2, 3),'clf__min_samples_leaf': (1, 2, 3) }grid_search = GridSearchCV(pipeline, parameters, n_jobs=-1, verbose=1, scoring='f1') grid_search.fit(X_train, y_train)best_parameters = grid_search.best_estimator_.get_params() print('Best score: %0.3f' % grid_search.best_score_) print('Best parameters set:') for param_name in sorted(parameters.keys()):print('t%s: %r' % (param_name, best_parameters[param_name]))predictions = grid_search.predict(X_test) print(classification_report(y_test, predictions)) Best score: 0.890 Best parameters set: tclf__max_depth: 155 tclf__min_samples_leaf: 2 tclf__min_samples_split: 2precision recall f1-score support0 0.97 0.99 0.98 7161 0.94 0.82 0.88 104accuracy 0.97 820macro avg 0.96 0.91 0.93 820 weighted avg 0.97 0.97 0.97 820

看見廣告類1的,精準率和召回率都還不錯。

3. 決策樹優缺點

優點:

  • 不要求對數據進行標準化
  • 可以進行多元分類而無需使用OvO,OvA等策略

缺點:

  • 更容易過擬合,需要剪枝(設置樹的最大深度、節點實例數量超過閾值才建立子節點)
  • 本質上是貪心算法,不保證全局最優

總結

以上是生活随笔為你收集整理的[scikit-learn 机器学习] 8. 非线性分类和决策树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。