美文网首页
Python数据挖掘-预测学生期末成绩

Python数据挖掘-预测学生期末成绩

作者: 洪乙己 | 来源:发表于2019-10-09 15:18 被阅读0次

Classification:预测学生期末成绩 

clickstream是挖掘用户潜在行为的重要工具。对于在线学习平台,讲师可以通过点击流模式分析来监控学生的学习模式。 

Video- clickstream记录学生观看讲座视频时的点击动作。常规video- clickstream日志文件包含以下事件:

加载视频、播放视频、暂停视频、查找视频、停止视频和切换视频速度(load_video, play_video, pause_video, seek_video, stop_video, and speed_change_video)。

在这一部分中,需要根据同一在线学习学期中63个讲座视频中的Clickstream事件日志来预测学生的期末考试成绩(通过或失败)。

数据集包括:

1.trainfeatures.csv:5050名学生的视频点击流日志信息,涵盖63个视频。需要用它来训练。

2.testfeatures.csv:1293学生视频点击流日志信息,涵盖63个视频。需要在测试阶段使用它。

trainfeatures.csv和testfeatures.csv中的学生属于同一学习学期,并共享相同的评分策略。

3.TrainLabel.csv:5050名学生的标签(1代表通过,0代表失败)。

4.TestData.csv:你需要预测的学生。他们的学习日志信息可以在testfeatures.csv中找到。

5.video info.csv:63个讲座视频的视频持续时间信息。

import numpy as np

import pandas as pd

from sklearn import svm

# ****************  Load Data 

train_data = pd.read_csv('TrainFeatures.csv', parse_dates=['event_time'])

train_label = pd.read_csv('TrainLabel.csv')

test_data = pd.read_csv('TestFeatures.csv', parse_dates=['event_time'])

test_user_id = pd.read_csv('TestData.csv',)

# ****************  Compute Feature 

#训练转换特征

#学生对于某个video是否有过操作,操作过为1,未操作过为0,并以此作为特征值

train_videos_watched = pd.DataFrame(train_data.groupby(['user_id','video_id'])['video_id'].nunique().unstack().to_records())

train_videos_watched.fillna(0,inplace=True)

#关联学生成绩,此为一组训练集

train_data_set = train_videos_watched.merge(train_label, how='left', on='user_id')

#操作测试集

test_videos_watched = pd.DataFrame(test_data.groupby(['user_id','video_id'])['video_id'].nunique().unstack().to_records())

test_videos_watched.fillna(0,inplace=True)

vids = test_data['video_id'].unique()

print(vids)

#从训练集中选取特征值和标签结果,进行训练

X = train_data_set[vids]

y = train_data_set['grade']

# ****************  Train Model

svm_clf = svm.SVC()

svm_clf.fit(X, y)

# train_pred = svm_clf.predict(X)

# print(sum(train_pred)/len(train_pred))

# ****************  Model Prediction

test_videos_watched['prediction'] = svm_clf.predict(test_videos_watched[vids])

test_pred = test_user_id.merge(test_videos_watched[['user_id','prediction']], how='left', on='user_id')

# print(test_pred.head())

# ****************  Save Prediction Results

test_pred.to_csv('prediction.csv', index=False)

#----------------------------------------------------------------------------------------------

#以上方法使用SVM进行分类,还可以使用如下方法进行预测。

from sklearn.metrics import accuracy_score

#***************Linear分类器构建

from sklearn.linear_model import LogisticRegression

lr = LogisticRegression()

lr.fit(X, y)

print(accuracy_score(y,lr.predict(X)))

#***************RidgeClassifier()分类器: ridge是为了解决特征大于样本,而导致分类效果较差的情况,而提出的。svm有一个重要的瓶颈——当特征数大于样本数的时候,效果变差。

from sklearn.linear_model import RidgeClassifier

rc=RidgeClassifier()

rc.fit(X, y)

print(accuracy_score(y,rc.predict(X)))

#***************KNeighborsClassifier()分类器构建

from sklearn.neighbors import KNeighborsClassifier

knn=KNeighborsClassifier()

knn.fit(X, y)

print(accuracy_score(y,knn.predict(X)))

相关文章

网友评论

      本文标题:Python数据挖掘-预测学生期末成绩

      本文链接:https://www.haomeiwen.com/subject/mkhgpctx.html