2016-02-08 3 views
2

Я пытался использовать дополнительные дерева классификатора этого набора данных, и по какой-то причине вValueError: Неизвестный тип метки: Массив ([0,11], ...), делая лишних дерева модели

model.fit(trainx,trainy) 

часть, это бросает меня

ValueError: Unknown label type: array([[ 0.11], 
     [ 0.12], 
     [ 0.64], 
     [ 0.83], 
     [ 0.33], 
     [ 0.72], 
     [ 0.49], 

ошибка. Массив ([0,11] мои данные trainy. Я искал переполнение стека и, видимо, из-за его sklearn не распознает тип данных, но ив попробовал все от

trainy = np.asarray(trainy,dtype=float) 
trainy=trainy.astype(float) 

и он не работает, даже если тип (trainy) показывает, что его numpy.ndarray Может кто-нибудь мне точку в правильном направлении здесь

Вот код:.?

import pandas as pd 
import numpy as np 
from sklearn.preprocessing import LabelEncoder 
from sklearn import metrics 
from sklearn.ensemble import ExtraTreesClassifier 
from sklearn import cross_validation 


def preProcess(): 
    df= pd.read_csv('C:/Users/X/Desktop/Managerial_and_Decision_Economics_2013_Video_Games_Dataset.csv',encoding ='ISO-8859-1') 
    #drop non EA 
    df = df[df['EA'] ==1] 
    #change categorical variables 
    le = LabelEncoder() 
    nonnumeric_columns=['Console','Title','Publisher','Genre'] 
    for feature in nonnumeric_columns: 
     df[feature] = le.fit_transform(df[feature]) 
    #set dataset and target variables 
    dataset =df.ix[:, df.columns != 'US Sales (millions)'] 
    target = df['US Sales (millions)'] 

    trainx, testx, trainy, testy = cross_validation.train_test_split(
     dataset, target, test_size=0.3, random_state=0) 
    #attempt to fix error? 
    trainx=np.array(trainx) 
    trainy = np.asarray(trainy, dtype="float") 
    return trainx,testx,trainy,testy 

def classifier(): 
    model = ExtraTreesClassifier(n_estimators=250, 
           random_state=0) 
    model.fit(trainx,trainy) 
    return model.score(testx,testy) 


trainx,testx,trainy,testy=preProcess() 

Я использую scikit учиться 0.17 на питона 3,5

ответ

4

Ваши ярлыки [[0.11], [ 0.12],..... Вы должны использовать ExtraTreesRegressor вместо ExtraTreesClassifier

Из исходного кода ForestClassifier:

y : array-like, shape = [n_samples] or [n_samples, n_outputs] 
      The target values (class labels in classification, real numbers in 
      regression). 
+0

Вы абсолютно правы, как же я сделать такую ​​основную ошибку. Спасибо огромное! :) – Wboy

0

Мой массив был поплавки в нем, при создании one_hot, я получил ту же ошибку.

training_labels = np.append(training_labels, [label]) 
... 
y_one_hot = label_binarizer.fit_transform(training_labels) 
ValueError: Unknown label type: (array([ 0. , 0.1, 

Поскольку я делаю КЛАССИФИКАЦИЮ, я должен был преобразовать их в строках

training_labels = np.append(training_labels, [str(label)]) 
['0.0' '0.1' '-0.2' ..., '0.0' '0.0' '0.1'] 
Смежные вопросы