我有一个从网上课程收集的数据集,有大约250个问题和200多名学生。数据集包含以下列
studentID, exerciseID, logindate, logoutdate, status, points
哪里 logindate, logoutdate
每一条记录都要注明入住和退房的日期和时间, status
参考进度,它在0%和100%之间变化,这意味着如果status=100,任务就解决了,然后他得到了一个 point
. 我想根据以前的数据预测期末考试的结果。
学生可以随心所欲地做每一个练习,即使任务已经解决,但每次他访问同一个练习时,参数都是不同的。例如 ax + b = 0
只有这样 a
以及 b
在这个任务中都在变化,所以我有大约500000的记录,供所有的同学和练习。
我做了一些聚合,每周添加点,我尝试了不同的ml算法,通过应用pca,只将学生分为三到四组(非常好,很好,满意,失败)得到了最好的结果,但仍然令人满意的组太混乱(我无法预测组中的天气是否通过)
现在,我正在尝试执行一个类似的分类,部署一个gru nn,如下所示。我把练习作为时间步(250个时间步作为上一个练习的结果,与下一个练习相关),我还为每个学生x做了一些特征工程,练习b,我有
solved, solved_duration, trying, trying_duration, trying_sstatus, check, check_duration
哪里 solved, soved_duraiton
他做了多少次练习,花了多长时间。 trying, trying_duration, trying_sstatus
他试过多少次,花了多长时间 status 0<status <100
检查,检查\u持续时间他检查它多少次而不尝试解决它,即状态=0,然后数据的形式是:
(200250,7)200名学生(示例)250个练习(timestep)和7个特征。所以我实现了以下代码,
n_steps = data.ExerciseID_cat.nunique()
n_features = 8
# define model
model = Sequential()
model.add(GRU(256, activation='relu', return_sequences=True, input_shape=(n_steps, n_features)))
model.add(GRU(100, return_sequences=True,activation='relu'))
model.add(GRU(10, activation='relu'))
model.add(Dense(1, activation='softmax')) # sigmoid
model.compile(optimizer='adam', loss='categorical_crossentropy') # mse
model.fit(X,y,epochs=1000, verbose=1, validation_split=0.2)
现在我的问题是:
你认为这种方法是否有效?
- . 如果是的话,我如何调整我的代码以获得一个好的结果,就像现在我使用的分类交叉熵损失=0.0000e+00并且从不改变,
注:考试成绩为分类(1,2,3,4,5)
- . 如果没有,
你认为这些数据足够输入神经网络吗?
你还有别的建议吗?
暂无答案!
目前还没有任何答案,快来回答吧!