python 逻辑回归准确率是1_python数据分析(三)——逻辑回归之学生成绩预测
Python數據分析項目
——學生成績預測
一.數據源
阿里云天池公開數據集:學生成績預測數據集
https://tianchi.aliyun.com/dataset/dataDetail?dataId=6785
特征(Features)介紹:
- Gender: 性別
- Nationality: 國籍
- PlaceofBirth:出生地
- StageID:學校級別(小學,中學,高中)
- GradeID:年級 (G01 - G12)
- SectionID: 班級
- Topic:學科科目
- Semester: 學期 (春學期,秋學期)
- Relation: 孩子家庭教育負責人(父親,母親)
- RaisedHands: 學生該學期上課舉手的次數
- VisitedResources: 學生瀏覽在線課件的次數
- AnnoucementsView: 學生瀏覽學校公告的次數
- Discussion: 學生參與課堂討論的次數
- ParentAnsweringSurvey: 家長是否填寫了關于學校的問卷調查 (是,否)
- ParentSchoolSatisfaction: 家長對于學校的滿意度 (好,不好)
- StudentAbsenceDays: 學生缺勤天數 (大于7天,低于7天)
結果(Response Variable)介紹:
- Class: 根據學生最后的學術評測分數,學生會被分為3個等級
- Low-Level: 分數區間在0-60
- Middle-Level:分數區間在70-89
- High-Level:分數區間在90-100
二.數據預覽
import pandas as pd
df=pd.read_csv('datalab/6785/students_data.csv')
df.head()
讀了前五行,看看數據情況
三.數據預處理
看看數據是否有缺失值
df.isnull().sum()
沒有缺失值
四.描述性統計
df.describe(include='all')
看看類別變量包含的內容:
print('gender',df.gender.unique())
看看數據集結果是否平衡:
import seaborn as sns
sns.countplot(x='Class',data=df)
五.可視化
可視化的目的是為了探索數據規律,發現數據之間的關系,比如特征與目標變量之間的相關性。
可視化可以使用seaborn和matplotlib庫進行,不過我不喜歡編程,所有比較喜歡用tableau,類別變量的可視化結果為tableau做的效果。
首先看看類別變量:
性別與得分:
國籍與得分:
班級與得分:
數值型變量:
相關性分析:
corr=df[['raisedhands','VisITedResources','AnnouncementsView','Discussion']].corr()
corr
Discussion與其他三個相關性較低,其他三個變量的相關性都比較高
以上結論從熱力圖也可以看出來:
sns.heatmap(corr, xticklabels=corr.columns,yticklabels=corr.columns)
六.模型建立
使用邏輯回歸模型進行預測,并計算準確率
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
#建立特征和目標變量
x=df.drop('Class',axis=1)
x= pd.get_dummies(x)#對類別變量進行one-hot編碼,即建立虛擬變量
y=df['Class']
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size = 0.2,random_state = 10)#建立訓練集和測試集
#模型訓練
logit=LogisticRegression()
logit.fit(x_train,y_train)
#預測
predict=logit.predict(x_test)
print('predict',predict)
#準確率評分
Score = accuracy_score(y_test, predict)
Score
七.模型優化
從可視化圖表探索發現SectionID與Class關系不大,所以嘗試剔除再進行建模:
x=df.drop(['Class','SectionID'],axis=1)
x= pd.get_dummies(x)
y=df['Class']
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size = 0.2,random_state = 10)
logit=LogisticRegression()
logit.fit(x_train,y_train)
predict=logit.predict(x_test)
print('predict',predict)
Score = accuracy_score(y_test, predict)
Score
可以看到準確率得到提升。
總結
以上是生活随笔為你收集整理的python 逻辑回归准确率是1_python数据分析(三)——逻辑回归之学生成绩预测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信用卡转账给支付宝怎么操作 有网银就行
- 下一篇: 全球制造业竞争力排名,美国仅排第四,我国