1. 程式人生 > >python之迴歸演算法

python之迴歸演算法

邏輯迴歸

import pandas as pda
fname='E:/programCode/huigui.csv'
dataf=pda.read_csv(fname)
#自變數x
x=dataf.iloc[:,1:4].as_matrix()#[:,1:2]中的右邊代表列取誰,左邊的代表行取誰
#因變數y
y=dataf.iloc[:,0:1].as_matrix()#.as_matrix作用為將其轉換為陣列,0:1前閉後開
from sklearn.linear_model import LogisticRegression as LR#邏輯迴歸模型
from sklearn.linear_model import RandomizedLogisticRegression as RLR#隨機迴歸模型
import joblib 
r1=RLR()
r1.fit(x,y)#用資料進行訓練
r1.get_support(indices=True)#進行特徵篩選
#print(dataf.columns[r1.get_support(indices=True)])
t=dataf[dataf.columns[r1.get_support(indices=True)]].as_matrix()
r2=LR()
r2.fit(t,y)
print('訓練結束')
print('模型正確率:'+r2.score(x,y))

決策樹(ID3演算法、C4.5演算法、CART演算法)

import pandas as pda
import numpy
fname='E:/programCode/lesson.csv'
dataf=pda.read_csv(fname)
x=dataf.iloc[:,1:5].as_matrix()#iloc[:,1:5]提取所有行,1到4列
y=dataf.iloc[:,5].as_matrix()
for i in range(0,len(x)):
    for j in range(0,len(x[i])):
        thisdata=x[i][j]
        if(thisdata=='是' or thisdata=='高' or thisdata=='多'):
            x[i][j]=int(1)
        else:
            x[i][j]=-1

for i in range(0,len(y)):
    thisdata=y[i]
    if(thisdata=='高'):
        y[i]=1
    else:
        y[i]=-1

#容易錯的地方:直接輸入x,y訓練
#正確的做法:轉化好格式,將x,y轉化為資料框,然後在轉換為陣列並指定格式
xf=pda.DataFrame(x)
yf=pda.DataFrame(y)

x2=xf.as_matrix().astype(int)
y2=yf.as_matrix().astype(int)
#建立決策樹
from sklearn.tree import DecisionTreeClassifier as DTC
dtc=DTC(criterion='entropy')#entropy為資訊熵,即為訓練標準為資訊熵
dtc.fit(x2,y2)#進行訓練生成決策樹
#直接驗證的方式,預測銷量高低
import numpy as npy
x3=npy.array([[1,-1,-1,1],[1,1,1,1],[-1,-1,-1,-1]])
rst=dtc.predict(x3)
print(rst)

#決策樹視覺化
from sklearn.tree import export_graphviz
from sklearn.externals.six import StringIO
with open('E:/programCode/dtc.dot','w') as file:
    export_graphviz(dtc,feature_names=['combat','num','promotion','datum'],out_file=file)#第二個引數為各特徵的名稱,第三個引數為指定檔案
    
#生成的dtc.dot檔案可用Gaphic轉換為PDF或其他檔案,檢視決策樹