2017-05-10 7 views
-1

政治学の学生は彼の頭を越えている(野心的だが彼らが言うようにゴミをかける)。基本的に、私は政治的な目的のために政治家の集合について魅力の予測をしようとしています。私はこれに続いたguide機械学習、テストに訓練モデルを適用する

特徴を抽出して特徴を生成したモデルで、学習セット(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 

は今、私は何の評価を持っていないいる政治家(142枚)、のための特徴データと別のfeatures.txtを持っています。私がやろうとしていることは、執行中のコードによって構築されたトレーニングセット/モデルを使用して、私の政治家の予測魅力評価を生成することですが、どのように進行するのか全く分かりません。このガイドは、おそらくPythonを知っている人のためのものであるため、これについては言及していません:)。私はこのコードを変更/修正する方法を見つけようと多くの時間を費やしてきましたが、Python /一般的なコーディングの知識がないため、把握が非常に難しくなっています。

このサイトに関する重要な知識と知識があれば、私は誰かが解決策を知り、私を助けてくれることを望んでいます。私の無力感に謝り、どんな助けでも事前に感謝します。

+0

非常に簡単です。上記と同じ手順を実行しますが、 'pca'または' regr'に 'fit()'を呼び出さないでください。あなたの新しいデータで 'pca.transform()'と 'regr.predict()'だけを呼び出してください。しかし、そのためにはオブジェクト 'pca'と' regr'を持続させる必要があります。あなたのコードは、 'for i in range(0、400):'がやっているようにもっと説明してください。そして、おそらくコードの記述に役立つでしょう。 –

+0

お返事ありがとうございます。だから私が集めた限り(私はこのコードを書かなかった)。範囲内の私はそれを400回ループするということです。したがって、画像1では、他の399画像を使用して画像1を予測し、次に画像2を予測し、他の399画像を使用してその評価を訓練し予測します。今私はそれが必要とは思わない、私がしたいのは、このコードで使用したレーティングを持つ400個の画像を使って、レーティングを持たない他の142個の画像を予測するからです。私はそれをするためにコードを分かりやすくする方法を確信していません。 – Cataffy

答えて

0

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) 
+0

ちょっと微妙な微調整をしなければならず、完全に機能しました。ありがとうございました。 – Cataffy

関連する問題