1. 程式人生 > 其它 >使用R完成邏輯斯蒂迴歸分類 直接上程式碼,如下:

使用R完成邏輯斯蒂迴歸分類 直接上程式碼,如下:

data_sample <- iris[51:150,];
m <- dim(data_sample)[1]  
#獲取資料集記錄條數
val <- sample(m, size =round(m/3), replace = FALSE, prob= 
rep(1/m, m))  #抽樣,選取三分之二的資料作為訓練集。  
iris.learn <- 
data_sample[-val,]  #選取訓練集  
iris.valid <- 
data_sample[val,]   #選取驗證集 
#呼叫glm函式訓練邏輯斯蒂二元模型
#glm()提供正態、指數、gamma、逆高斯、Poisson、二項分佈。我們的logistic迴歸使用的是二項分佈族binomial。Binomial族預設連線函式為logit,可設定為probit。
logit.fit 
<- glm(Species~Petal.Width+Petal.Length,
 family = binomial(link = 
'logit'),
 data = iris.learn);
#生成測試資料集,實際上直接使用iris.valid
dfrm <- 
data.frame(Petal.Width=iris.valid$Petal.Width,
 Petal.Length=iris.valid$Petal.Length);
real_sort <- iris.valid$Species;  #測試資料集實際類別
prdict_res <- predict(logit.fit, type="response", newdata=dfrm);  
#預測資料產生概率
data.frame(predict=prdict_res, real=real_sort);  
#檢視資料產生概率和實際分類的關係
data.frame(predict=ifelse(prdict_res>0.5, "virginica", 
"versicolor"), real=real_sort);  
#根據資料產生概率生成預測分類
table(data.frame(predict=ifelse(prdict_res>0.5, 
"virginica", "versicolor"), real=real_sort));  #計算分類準確度