2017-12-14 26 views
0

Sklearnアルゴリズムでは、Sklearnアルゴリズムで学習するための機能とラベルが必要です。CSVファイルをPythonにインポートしてnumpy配列に変換し、Sklearnアルゴリズムに入力してください。

私はいくつかのデータを含むCSVファイルを持っています。これらのデータは実際に、参加者がアフィリエイトネットワークの膨大な個人のデータとその広告クリックパフォーマンスから学ぶ学習アルゴリズムを作成する必要があるhackerearthウェブサイトからの挑戦であり、アフィリエイトネットワーク内の他の個人の将来のパフォーマンスを予測し、広告パフォーマンスを最適化することができます。

これらのデータの機能には、id、date、siteid、offerid、カテゴリ、マーチャント、国コード、ブラウザのタイプ、デバイスのタイプ、広告のクリック数が含まれます。

https://www.hackerearth.com/practice/algorithms/string-algorithm/string-searching/practice-problems/machine-learning/predict-ad-clicks/

だから私の計画は私の機能やラベルなどの広告のクリックとして最初の7の情報を使用することです。残念ながら、国コード、ブラウザ、デバイス情報はテキスト形式(Google Chrome、デスクトップ)であり、配列に変換できる整数ではありません。

Q1:sklearnがnumpy配列だけでなく単語をフィーチャーとして受け入れる方法はありますか?私はこれにベクトル化ツールを使用することをサポートしていますか?もしそうなら、どうすればいいのですか?そうでない場合は、言い回しデータを数字に置き換えることができます(Google Chromeは1に置き換えられ、firefoxは2で置き換えられます)。 (Naive Bayesアルゴリズムを使用しています)

Q2:Naive Bayesアルゴリズムはこのタスクに適していますか?この競争は参加者がアフィリエイトネットワーク内の個人が広告をクリックする可能性を予測するプログラムを作成する必要があるため、Naive Bayesが最適と思われます。

トレーニングデータ:https://drive.google.com/open?id=1vWdzm0uadoro3WcpWmJ0SVEebeaSsHvr

テストデータ:https://drive.google.com/open?id=1M8gR1ZSpNEyVi5W19y0d_qR6EGUeGBQl

私の汚いコーディングと私は多くの助けになるとは思わない、この挑戦​​で恐ろしい試み:

from sklearn.naive_bayes import GaussianNB 
import csv 
import pandas as pd 
import numpy as np 
data = [] 
from numpy import genfromtxt 
import pandas as pd 
data = genfromtxt('smaller.csv', delimiter=',') 
dat = pd.read_csv('smaller.csv', delimiter=',') 
print(dat(siteid)) 

feature = [] 
label =[] 
i = 1 
j = 1 

while i <17: 
    feature.append(data[i][2:8]) 
    i += 1 
while j <17: 
    label.append(data[i][9]) 
    j += 1 
clf = GaussianNB() 

clf.fit(feature,label) 
print(clf.predict([data[18][2:8]])) 
print(data[18]) 
+0

あなたの質問はまったくばかげたことではなく、あなたが質問してコードのスニペットを添付してもいいです。あなたの最初の質問に関しては、カテゴリデータを数値に置き換えるというあなたの考えは正しいですが、もう少し良い方法は[OneHotEncoder](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing)です。 OneHotEncoder.html) – Flika205

答えて

1

回答のため質問1:いいえ、Sklearnは数値データでのみ動作します。テキストを数字に変換する必要があります。

ここで、テキストを数値に変換するには、複数の方法があります。まず、番号を割り当てただけです。しかし、テキストデータに割り当てられた番号のような順序が示されているかどうかを考慮する必要があります。その場合、最も頻繁に1ホットエンコードが使用されます。そのために、以下のscikit-学ぶドキュメントを参照してください。 - http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features

回答が2を質問:それは手元のデータおよびタスクに依存します。

すべてのタイプのデータを最適に処理するアルゴリズムはありません。

ホープこれはあなたの疑問をクリアします。 scikit-学ぶドキュメントとサンプルを通過するようにしてください:

彼らがそこに最高の一つです。

関連する問題