数据挖掘初次接触!学习代码
生活随笔
收集整理的這篇文章主要介紹了
数据挖掘初次接触!学习代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
import pandas as pd
import numpy as np
from time import timedata=pd.read_csv("dankuan.csv",sep=';',index_col=0) #打開表
data.head() #查看前幾行的數據,默認前5行
data.describe() #數據的快速統計匯總
data.g4_term_type.value_counts()
data2=data.fillna(value={'star_class':1300,'main_offer_level':0,'mon_flow_last2':0,'mon_flow_last1':0,'thrmon_flow_trend':0}).fillna(6) #缺值處理
data2.g4_term_type.value_counts(dropna=False)#計數
data2.isnull().any()#查看字段是否有空值#pd.get_dummiesfrom sklearn import preprocessingenc = preprocessing.OneHotEncoder()
a1 = data2[['g4_term_type','thrmon_flow_trend']]
enc.fit(a1)data2_onehot=pd.DataFrame(enc.transform(a1).toarray().astype(np.bool))
# train_onehot.columns = ['edu_class0','edu_class1','edu_class2','edu_class3','curPlan1','curPlan2','curPlan3','curPlan4']
# train2=pd.concat([train,train_onehot.set_index(train.index)],axis=1)
# test_onehot=pd.DataFrame(enc.transform(test[['edu_class', 'curPlan']]).toarray().astype(np.bool))
# test_onehot.columns = ['edu_class0','edu_class1','edu_class2','edu_class3','curPlan1','curPlan2','curPlan3','curPlan4']
# test2=pd.concat([test,test_onehot.set_index(test.index)],axis=1)print(enc.n_values_,enc.feature_indices_,data2_onehot.shape)data2_onehot.columns=['data2_onehot1','data2_onehot2','data2_onehot3','data2_onehot4','data2_onehot5','data2_onehot6','data2_onehot7','data2_onehot8']#區總類別數
data3=pd.concat([data2,data2_onehot.set_index(data2.index)],axis=1)data3.head()names=data3.columns
names=names.drop(['is_zf_flag'])#去除無用值
data3[names].head()
namesX=data3[names]
y=data3.is_zf_flagfrom sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)#拆分訓練數據與測試數據
from sklearn.ensemble import RandomForestClassifier #算法1:自動調優算法
from sklearn.model_selection import train_test_split,GridSearchCV
rf = RandomForestClassifier(n_estimators=200,max_features=0.7,)
model = GridSearchCV(rf, param_grid={'max_depth':[1,5,10], 'min_samples_leaf':[2,5,10,20,50,100]}, cv=3)
model.fit(X_train,y_train)
y_pred = model.predict(X_test)from sklearn.ensemble import RandomForestClassifier#算法2:隨機深林算法clf = RandomForestClassifier(n_jobs = 1)#分類型決策樹;
#n_jobs:用幾個處理器
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)#判定結果
y_pred.shapeprint(list(zip(names,np.round(clf.feature_importances_*100,2))))#各feature的重要性
print(names[clf.feature_importances_.argmax()],np.round(clf.feature_importances_*100,2).max())from sklearn.metrics import accuracy_score,recall_score,precision_score,f1_score
#分類準確率,提取出的正確信息條數 /樣本中的信息條數,正確被檢索/實際被檢索,正確被檢索/應該檢索到print(accuracy_score(y_test,y_pred),recall_score(y_test,y_pred))
print(precision_score(y_test,y_pred),f1_score(y_test,y_pred))from sklearn.model_selection import cross_val_score
re_yc = cross_val_score(model, X_train, y_train, cv=10) #交叉驗證用于防止模型過于復雜而引起的過擬合from sklearn.model_selection import cross_val_score
re = cross_val_score(clf, X_train, y_train, cv=15) #交叉驗證用于防止模型過于復雜而引起的過擬合re_yc.max()re_yc.min()re_yc.max()-re_yc.min()data_yc = pd.read_csv("dankuan_yc.csv",sep=';',index_col=0) #打開表
data_yc2=data_yc.fillna(value={'star_class':1300,'main_offer_level':0,'mon_flow_last2':0,'mon_flow_last1':0,'thrmon_flow_trend':0}).fillna(6) #缺值處理
a2 = data_yc2[['g4_term_type','thrmon_flow_trend']]
enc.fit(a2)
data_yc_onehot=pd.DataFrame(enc.transform(a2).toarray().astype(np.bool))
data2_onehot.columns=['data2_onehot1','data2_onehot2','data2_onehot3','data2_onehot4','data2_onehot5','data2_onehot6','data2_onehot7','data2_onehot8']#區總類別數
data3_yc=pd.concat([data_yc2,data_yc_onehot.set_index(data_yc2.index)],axis=1)
names_yc=data3_yc.columns
xxx=data3_yc[names_yc]ans=model.predict(xxx)
pd.DataFrame(ans).set_index(xxx.index).to_csv("dkjg.csv",header=False) ans=clf.predict(xxx)
pd.DataFrame(ans).set_index(xxx.index).to_csv("dkjg.csv",header=False)
轉載于:https://www.cnblogs.com/CQ-LQJ/p/7834476.html
總結
以上是生活随笔為你收集整理的数据挖掘初次接触!学习代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 懒加载与预加载
- 下一篇: 随笔27 面向对象的五大基本原则