基於隨機森林模型的紅酒品質分析

2021-10-04 22:47:16 字數 3700 閱讀 6517

# url: 

# 匯入模組

import pandas as pd

import seaborn as sns

import matplotlib.pyplot as plt

from sklearn.ensemble import randomforestclassifier

from sklearn.model_selection import gridsearchcv

import warnings

warnings.filterwarnings(

'ignore'

)try

: wine = pd.read_csv(

'winequality-red.csv'

, sep =

';')

# 讀取檔案,sep設定分隔符為;

except

:print

("cannot find the file!"

)print

(wine.info())

# 葡萄酒資料

print

(wine.describe())

# 資料的基本統計資訊

wine = wine.drop_duplicates(

)# 刪除重複的記錄

# 餅圖展示quality每一類資料的值

wine[

'quality'

].value_counts(

).plot(kind =

'pie'

, autopct =

'%.2f'

)plt.show(

)# quality與其他屬性之間的皮爾遜相關係數

print

(wine.corr(

).quality)

# 每個quality對應的volatile acidity和quality屬性的均值分布

plt.subplot(

121)

sns.barplot(x =

'quality'

, y =

'volatile acidity'

, data = wine)

plt.subplot(

122)

sns.barplot(x =

'quality'

, y =

'alcohol'

, data = wine)

plt.show(

)from sklearn.preprocessing import labelencoder

# bins構成左開右閉的區間 (2,4],(4,6],(6,8]

bins =(2

,4,6

,8)# 組名

group_names =

['low'

,'medium'

,'high'

]# 使用cut進行劃分資料

wine[

'quality_lb'

]= pd.cut(wine[

'quality'

], bins = bins, labels = group_names)

# 為quality_lb屬性分配標籤0,1,2 label為具體的標籤

lb_quality = labelencoder(

)

wine[

'label'

]= lb_quality.fit_transform(wine[

'quality_lb'])

# wine.label.value_counts()統計新類別的分布

print

(wine.label.value_counts())

wine_copy = wine.copy(

)wine.drop(

['quality'

,'quality_lb'

], axis =

1, inplace =

true

)# 通過資料選擇方式,將特徵屬性和目標屬性分開存入x,y

x = wine.iloc[:,

:-1]

y = wine.label

from sklearn.model_selection import train_test_split

# train_test_split可以從樣本中按照比例選取訓練資料和測試資料,test_size設定比例

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size =

0.2)

# 進行規範化處理

from sklearn.preprocessing import scale

# 將特徵屬性訓練集合測試集用scale進行標準化處理

x_train = scale(x_train)

x_test = scale(x_test)

from sklearn.metrics import confusion_matrix

# 使用randomforestclassifier構建乙個分類器,n_estimators是使用最大投票數或均值建立子樹的數量

rfc = randomforestclassifier(n_estimators =

200)

# 使用fit進行訓練

rfc.fit(x_train, y_train)

# 使用predict進行**

y_pred = rfc.predict(x_test)

# 實際值與**值比較,使用confusion_matrix混淆矩陣來觀察

print

(confusion_matrix(y_test, y_pred)

)# 選取的引數

param_rfc =

# gridsearchcv暴力搜尋

grid_rfc = gridsearchcv(rfc, param_rfc, iid =

false

, cv =5)

grid_rfc.fit(x_train, y_train)

best_param_rfc = grid_rfc.best_params_

# best_param_rfc是已取得最佳結果的引數的組合

print

(best_param_rfc)

# 重新**

scikit learn中的隨機森林模型

和決策樹模型類似,scikit learn中的隨機森林模型也提供了基於普通decision tree的random forest學習器和基於隨機化extra tree的extratrees學習器。鑑於decision tree和extra tree差別甚小,本文以random forest為例進行介...

在真實資料集上的隨機森林模型引數調優

1.調參優化演算法 2.機器學習 整合演算法1 隨機森林分類器 紅酒資料集案例 隨機森林回歸器 波士頓資料集填充缺失值案例 3.實用kaggle競賽之隨機森林評估及調參 4.實用隨機森林 針對時間序列的kaggle技巧 搞機器學習的人,都會有自己偏愛的某種演算法,有的喜歡支援向量機 svm 因為它公...

RDKit 基於隨機森林的化合物活性二分類模型

隨機森林是許多決策樹組成的模型。這個模型不僅僅是乙個森林,而且它還是隨機的,因為有兩個概念 隨機抽樣的資料點 基於要素子集拆分的節點 隨機森林背後的另乙個關鍵點是,只考慮所有特徵的子集來分割每個決策樹中的每個節點。通常,這被設定為sqrt n features 意味著在每個節點處,決策樹考慮在特徵的...