Python 绘制培训和验证损失曲线?
我正在使用酵母数据集,该数据集位于: 我想建立一个神经网络分类器模型并绘制学习曲线。因此,我两次使用scikit的模型_选择;一个用于制作培训和测试集,另一个用于选择验证集。从这两组中,我想绘制学习曲线,我的代码如下:Python 绘制培训和验证损失曲线?,python,Python,我正在使用酵母数据集,该数据集位于: 我想建立一个神经网络分类器模型并绘制学习曲线。因此,我两次使用scikit的模型_选择;一个用于制作培训和测试集,另一个用于选择验证集。从这两组中,我想绘制学习曲线,我的代码如下: import numpy as np import pandas as pd from sklearn import model_selection, linear_model from sklearn.model_selection import train_test_spl
import numpy as np
import pandas as pd
from sklearn import model_selection, linear_model
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.neural_network import MLPClassifier
import matplotlib.pyplot as plt
def readFile(file):
head=["seq_n","mcg","gvh","alm","mit","erl","pox","vac","nuc","site"]
f=pd.read_csv(file,delimiter=r"\s+")
f.columns=head
return f
def NeuralClass(X,y):
X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,test_size=0.2)
X_tr,X_val,y_tr,y_val=model_selection.train_test_split(X_train,y_train,test_size=0.2)
mlp=MLPClassifier(activation="relu",max_iter=3000)
mlp.fit(X_train,y_train)
print (mlp.score(X_train,y_train))
plt.plot(mlp.loss_curve_)
mlp.fit(X_val,y_val)
plt.plot(mlp.loss_curve_)
def main():
f=readFile("yeast.data")
list=["seq_n","site"]
X=f.drop(list,1)
y=f["site"]
NeuralClass(X,y)
if __name__=="__main__":
main()
我得到了一张如下的图表,我不知道它是否正确:
问题是,这是否是绘制验证曲线的正确方法,或者我采用的方法是否正确
谢谢没有测试它,但应该是这样的:
def NeuralClass(X,y):
X_train,X_test,y_train,y_test = model_selection.train_test_split(
X,y,test_size=0.2)
mlp=MLPClassifier(
activation="relu",
max_iter=3000,
validation_fraction=0.2,
early_stopping=True)
mlp.fit(X_train,y_train)
print (mlp.score(X_train,y_train))
plt.plot(mlp.loss_curve_)
plt.plot(mlp.validation_scores_)
两个问题:这段代码绘制了两条训练曲线,而验证集是X_trainyes@Marat的子集。我必须从训练集中获取验证集,因为我不知道如何使用训练测试获取验证数据。我得到了错误“'mlpclassizer'对象没有属性'validation_scores'”,对吗,它还需要提前停止。我更新了答案,你能再试一次吗?