# 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 意味著在每個節點處,決策樹考慮在特徵的...