0

Моя модель классификации имеет очень низкую точность. Даже когда я использую модель K-Nearest Neighbors с соседями = 1, модель все еще ошибочна. Модель logreg имеет самую высокую точность, и она просто предсказывает 0 для каждого образца. Я новичок в ML и пытаюсь понять, что я делаю неправильно. Как я могу улучшить модель?Модель классифицированной классификации обучения очень неточна

вход:

# load the CSV file as a numpy matrix 
dataset = np.loadtxt(raw_data, delimiter=",") 
target = np.loadtxt(target_data, delimiter=",") 
# separate the data from the target attributes 
X = dataset[:,0:6] 
y = target[:] 
print X.shape 
print y.shape 
#print X 
#print y 

knn = KNeighborsClassifier(n_neighbors=1) 
print knn 
knn.fit(X,y) 
result = knn.predict(X) 
print metrics.accuracy_score(y, result) 

knn = KNeighborsClassifier(n_neighbors=5) 
print knn 
knn.fit(X,y) 
result = knn.predict(X) 
print metrics.accuracy_score(y, result) 

logreg = LogisticRegression() 
print logreg 
logreg.fit(X, y) 
result = logreg.predict(X) 
#every prediction is 0 
print metrics.accuracy_score(y, result) 

выход:

[email protected]:~/Dev/Enterprise-Project$ python loadcsv.py 
(700, 6) 
(700,) 
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', 
      metric_params=None, n_jobs=1, n_neighbors=1, p=2, 
      weights='uniform') 
0.674285714286 
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski', 
      metric_params=None, n_jobs=1, n_neighbors=5, p=2, 
      weights='uniform') 
0.675714285714 
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, 
      intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1, 
      penalty='l2', random_state=None, solver='liblinear', tol=0.0001, 
      verbose=0, warm_start=False) 
0.72 

ответ

0

Одна огромная проблема, которую я могу видеть прямо сейчас, что вы путать между regression и classification. Итак, что вы на самом деле пытаетесь сделать, создавая модель классификации или модель регрессии, без выборочных данных, которые трудно определить.

Поскольку вы используете scikit-learn, попробуйте взглянуть на их cheat-sheet, чтобы приблизиться к тому, что вы ищете.

FYI, без любой предварительная обработка, классификация 67% неплохая.

+0

Не думаю, что есть какие-либо путаницы в отношении регрессии/классификации. Логистическая регрессия здесь используется как линейный классификатор. Я согласен с тем, что точность 67% без предварительной обработки или настройки гиперпараметра действительно не плоха. Однако, поскольку модели не были проверены по невидимым данным, я бы взял эти результаты с солью. – abudis

+0

@abudis, я должен не соглашаться относительно регрессии/классификации. * Если * 'y' является целевым классом для этих функций, использование метода логистической регрессии само по себе обеспечит неправильные результаты. Как сказал OP * «Модель логрега имеет самую высокую точность, и она просто предсказывает 0 для каждого образца». * – Leb

Смежные вопросы