2017-12-14 18 views
0

Sklearn 알고리즘에는 피할 수있는 기능과 레이블이 필요합니다.CSV 파일을 파이썬으로 가져온 다음 numpy 배열로 변환 한 다음 Sklearn 알고리즘에 입력하십시오.

일부 데이터가 포함 된 CSV 파일이 있습니다. 이 데이터는 실제로 hackerearth 웹 사이트에서 참가자가 제휴 네트워크의 엄청난 양의 개인 데이터와 해당 광고 클릭 실적에서 학습 알고리즘을 작성하여 제휴 네트워크의 다른 개인의 향후 실적을 예측할 수있는 도전 과제입니다. 회사는 광고 실적을 최적화 할 수 있습니다.

이 데이터의 기능에는 ID, 날짜, 사이트 ID, 쿠폰 ID, 카테고리, 판매자, 국가 코드, 브라우저 유형, 기기 유형 및 광고 클릭 수가 포함됩니다.

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

그래서 내 계획은 내 기능 및 라벨 등의 광고 클릭으로 처음 7 정보를 사용하는 것입니다. 유감스럽게도 국가 코드, 브라우저 및 기기 정보는 텍스트 형식 (Google 크롬, 데스크톱)이며 배열로 변환 할 수있는 정수는 아닙니다.

1 : sklearn이 numpy 배열뿐만 아니라 단어를 기능으로 받아 들일 수있는 방법이 있습니까? 이를 위해 벡터화기를 사용하도록 지원합니까? 그렇다면 어떻게해야할까요? 그렇지 않은 경우 문구 데이터를 숫자로 바꿀 수 있습니까 (Google 크롬은 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은 숫자 데이터에서만 작동합니다. 따라서 텍스트를 숫자로 변환해야합니다.

이제 텍스트를 숫자로 변환하면 여러 가지 방법을 따를 수 있습니다. 첫 번째는 숫자를 할당했다고 말한 것입니다. 그러나 텍스트 데이터에 할당 된 번호와 같은 순서가 표시되면 계정을 고려해야합니다. 이 경우 가장 자주 한 - 핫 인코딩이 사용됩니다. 그것을 위해 아래 scikit 배우고 설명서를 참조하십시오 : - http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features

대답이를 질문 : 그것은 손의 데이터 및 작업에 따라 달라집니다.

모든 유형의 데이터를 최적으로 처리 할 수있는 알고리즘은 하나도 없습니다.

희망이 당신의 의심을 지 웁니다. scikit 배우기 문서와 예제를 통해 이동해야합니다 :

그들은 거기 최고 중 하나입니다.