AttributeError: у объекта 'str' нет атрибута 'fit' - PullRequest
0 голосов
/ 30 мая 2018

Привет, я хочу использовать простой AdaBoostClassifier для набора данных грибов, который пускает в заблуждение что-то.как:

target  cap-shape  cap-surface  cap-color  bruises  odor  \
3059       0          2            3          2        1     5   
1953       0          5            0          3        1     5   
1246       0          2            2          3        0     5   
5373       1          5            2          8        1     2   
413        0          5            3          9        1     3   

...

используя:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.preprocessing import LabelEncoder
import pandas as pd

dataset = pd.read_csv('data\mushroom.csv',header=None)
dataset = dataset.sample(frac=1)
dataset.columns = ['target','cap-shape','cap-surface','cap-color','bruises','odor','gill-attachment','gill-spacing',
             'gill-size','gill-color','stalk-shape','stalk-root','stalk-surface-above-ring','stalk-surface-below-ring','stalk-color-above-ring',
             'stalk-color-below-ring','veil-type','veil-color','ring-number','ring-type','spore-print-color','population',
             'habitat']

for label in dataset.columns:
    dataset[label] = LabelEncoder().fit(dataset[label]).transform(dataset[label])


X = dataset.drop(['target'],axis=1)
Y = dataset['target']


AdaBoost = AdaBoostClassifier(base_estimator='DecisionTreeClassifier',n_estimators=400,learning_rate=0.01,algorithm='SAMME')

AdaBoost.fit(X,Y)

prediction = AdaBoost.score(Y)

print(prediction)

но это возвращает меня:

---> 15AdaBoost.fit (X, Y)

AttributeError: у объекта 'str' нет атрибута 'fit'

Ответы [ 2 ]

0 голосов
/ 11 июля 2018

Что касается моего комментария в ответе 2Obe выше, я нашел правильный способ указать параметр -

AdaBoostClassifier(base_estimator=DecisionTreeClassifier(),n_estimators=400,learning_rate=0.01,algorithm='SAMME')

Это должен быть конструктор, а не строка

0 голосов
/ 30 мая 2018

Я нашел проблему.В качестве base_estimator я установил 'DecisionTreeClassifier'.Это жало и не имеет метода fit ().AdaBoost не является строкой.

from sklearn.ensemble import AdaBoostClassifier
from sklearn.preprocessing import LabelEncoder

for label in dataset.columns:
    dataset[label] = LabelEncoder().fit(dataset[label]).transform(dataset[label])

X = dataset.drop(['target'],axis=1)
Y = dataset['target']


AdaBoost = AdaBoostClassifier(n_estimators=400,learning_rate=0.01,algorithm='SAMME')

AdaBoost.fit(X,Y)

prediction = AdaBoost.score(X,Y)

print(prediction)

0,9182668636139832

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...