Python 机器学习,将训练模型应用于测试

Python 机器学习,将训练模型应用于测试,python,machine-learning,scikit-learn,linear-regression,Python,Machine Learning,Scikit Learn,Linear Regression,政治学研究生,他是一个很有野心的人,但他们说他是垃圾。基本上,为了政治学的目的,我试图对一组政客进行吸引力预测。我遵循了这一点 在提取了地标和生成的特征后,我使用我的学习集(CFD,400幅带评级的图像)进行模型预测,通过交叉验证,预测评级与实际评级之间的相关性为0.49(对我来说足够好)。这就是代码: import numpy as np from sklearn import decomposition from sklearn import linear_model features =

政治学研究生,他是一个很有野心的人,但他们说他是垃圾。基本上,为了政治学的目的,我试图对一组政客进行吸引力预测。我遵循了这一点

在提取了地标和生成的特征后,我使用我的学习集(CFD,400幅带评级的图像)进行模型预测,通过交叉验证,预测评级与实际评级之间的相关性为0.49(对我来说足够好)。这就是代码:

import numpy as np
from sklearn import decomposition
from sklearn import linear_model
features = np.loadtxt('C:\\Users\\bruker\\Desktop\\Data\\CFD_features.txt', delimiter=',')
ratings = np.loadtxt('C:\\Users\\bruker\\Desktop\\Data\\CFD_ratings.txt', delimiter=',')
predictions = np.zeros(ratings.size);

for i in range(0, 400):
    features_train = np.delete(features, i, 0)
    features_test = features[i, :]
    ratings_train = np.delete(ratings, i, 0)
    ratings_test = ratings[i]
    pca = decomposition.PCA(n_components=13)
    pca.fit(features_train)
    features_train = pca.transform(features_train)
    features_test = pca.transform(features_test)
    regr = linear_model.LinearRegression()
    regr.fit(features_train, ratings_train)
    predictions[i] = regr.predict(features_test)
    print 'number of models trained:', i+1

np.savetxt('C:\\Users\\bruker\\Desktop\\Data\\CFDN_cross_valid_predictions.txt', predictions, delimiter=',', fmt = '%.04f')

corr = np.corrcoef(predictions, ratings)[0, 1]
print corr
现在我有了另一个features.txt,里面有政客的特征数据(142张图片),我没有评分。我想做的是使用上述代码构建的训练集/模型为我的政客生成预测的吸引力评级,但我完全不知道如何进行。本指南对此保持沉默,可能是因为它是为了解Python的人准备的:)。我花了很多时间试图找出修改/构建此代码的方法来实现它,但我缺乏Python/通用编码知识,因此很难理解


考虑到这个网站的巨大智慧和知识,我希望有人知道一个解决方案,可以帮助我。为我的无俱乐部表示歉意,并提前感谢您的帮助。

如果没有for循环,这将变得非常简单

import numpy as np
from sklearn import decomposition
from sklearn import linear_model

features_train = np.loadtxt('C:\\Users\\bruker\\Desktop\\Data\\CFD_features.txt', delimiter=',')
ratings_train = np.loadtxt('C:\\Users\\bruker\\Desktop\\Data\\CFD_ratings.txt', delimiter=',')

pca = decomposition.PCA(n_components=13)
pca.fit(features_train)
features_train = pca.transform(features_train)
regr = linear_model.LinearRegression()
regr.fit(features_train, ratings_train)

features_test = np.loadtxt('C:\\Users\\bruker\\Desktop\\Data\\CFD_features_Test.txt', delimiter=',')

features_test = pca.transform(features_test)
predictions = regr.predict(features_test)

这很容易。执行与上述相同的步骤,但不在
pca
regr
上调用
fit()
。只需对新数据调用
pca.transform()
regr.predict()
。但为此,您需要保持对象
pca
regr
持久化。你应该解释你的代码,更像是范围(0400)内i的
在做什么:
我可能会帮你写代码。谢谢你的回复。据我所知(我没有写这段代码)。范围内的i是它循环400次。所以对于图像1,它使用其他399个图像来训练,然后预测图像1,然后执行图像2,然后使用其他399个图像来训练和预测其评级。现在我不认为我需要它,因为我想做的是使用我在这段代码中使用的400个有评级的图像来预测其他142个没有评级的图像。我只是不知道如何解开代码来做它。只是做了一些小的调整,它工作得很好。非常感谢Vivek!