Scikit learn Sklearn模型在小数据集上返回零权重

Scikit learn Sklearn模型在小数据集上返回零权重,scikit-learn,sklearn-pandas,Scikit Learn,Sklearn Pandas,我目前正试图用SKL来学习国际间人口停滞与幸福的关系。我已经用熊猫准备并清理了数据集,但由于某些原因,我尝试的任何模型都无法训练。我的数据专栏之一是国家,所以我使用pandas get_dummies函数来解释将字符串输入模型的原因。我的训练和测试变量的形状如下:(617,67),(617,),(151,67),(151,) 我的数据集是否太小而无法进行训练?假人对模特来说太多了吗?非常感谢您提供的任何帮助。您的数据很小,但这取决于您如何从中提取有用信息。您没有显示在67个功能中,有多少是使用假

我目前正试图用SKL来学习国际间人口停滞与幸福的关系。我已经用熊猫准备并清理了数据集,但由于某些原因,我尝试的任何模型都无法训练。我的数据专栏之一是国家,所以我使用pandas get_dummies函数来解释将字符串输入模型的原因。我的训练和测试变量的形状如下:(617,67),(617,),(151,67),(151,)


我的数据集是否太小而无法进行训练?假人对模特来说太多了吗?非常感谢您提供的任何帮助。

您的数据很小,但这取决于您如何从中提取有用信息。您没有显示在67个功能中,有多少是使用假人生成的。您可以在用于根据某些字符串清理/预处理的常见标准生成假人的列中合并几个字符串。更清楚地了解“不会训练”的含义也会有所帮助。
trany
有多少类别?您的数据很小,但这取决于你如何从中提取有用的信息。您没有显示在67个功能中,有多少是使用假人生成的。您可以在用于根据某些字符串清理/预处理的常见标准生成假人的列中合并几个字符串。更清楚地了解“不会训练”的含义也会有所帮助。
trany
有多少类别?
rf_class = RandomForestClassifier(n_estimators=5)
log_class = LogisticRegression()
svm_class = SVC(kernel='rbf', C=1E11, verbose=False)

def run(model, model_name='this model', trainX=trainX, trainY=trainY, testX=testX, testY=testY):
    # print(cross_val_score(model, trainX, trainY, scoring='accuracy', cv=10))
    accuracy = cross_val_score(model, trainX, trainY,
                               scoring='accuracy', cv=2).mean() * 100
    model.fit(trainX, trainY)
    testAccuracy = model.score(testX, testY)
    print("Training accuracy of "+model_name+" is: ", accuracy)
    print("Testing accuracy of "+model_name+" is: ", testAccuracy*100)
    print('\n')

# run(rf_class,'log')


model = log_class
model.fit(trainX,trainY)

perm = PermutationImportance(model, random_state=1).fit(testX, testY)
eli5.show_weights(perm, feature_names=feature_names)