Как выполнить логистическую c регрессию по данным обучения и тестирования? - PullRequest
0 голосов
/ 21 июня 2020

Я запустил этот код, но похоже, что в строке lr.fit есть ошибка. Кто-нибудь знает, как это сделать?

from sklearn.model_selection import cross_val_predict
from sklearn.model_selection import cross_val_score
from sklearn import linear_model
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv('2019.csv')
df1 = pd.DataFrame(df,columns=['GDP per capita', 'Social support'])

lr = LogisticRegression()
columns = ['GDP per capita', 'Social support']

X = df[columns]
y = df["Score"]
X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.20,random_state=0)

lr.fit(X_train,y_train)
predictions = lr.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(accuracy)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-afa10dbaa367> in <module>
     19 X_train, X_test, y_train, y_test = train_test_split(X,y, test_size=0.30,random_state=0)
     20 
---> 21 lr.fit(X_train,y_train)
     22 predictions = lr.predict(X_test)
     23 accuracy = accuracy_score(y_test, predictions)

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/linear_model/_logistic.py in fit(self, X, y, sample_weight)
   1526         X, y = check_X_y(X, y, accept_sparse='csr', dtype=_dtype, order="C",
   1527                          accept_large_sparse=solver != 'liblinear')
-> 1528         check_classification_targets(y)
   1529         self.classes_ = np.unique(y)
   1530         n_samples, n_features = X.shape

~/opt/anaconda3/lib/python3.7/site-packages/sklearn/utils/multiclass.py in check_classification_targets(y)
    167     if y_type not in ['binary', 'multiclass', 'multiclass-multioutput',
    168                       'multilabel-indicator', 'multilabel-sequences']:
--> 169         raise ValueError("Unknown label type: %r" % y_type)
    170 
    171 

ValueError: Unknown label type: 'continuous'

вверху - это полная ошибка отладки, я заставил это работать, только когда я сделал .astype (int) рядом с X и y. В противном случае, если я этого не сделаю, произойдет ошибка, как вы видели.

1 Ответ

1 голос
/ 21 июня 2020

Я зашел в Kaggle, поискал и нашел файл 2019.csv с двумя столбцами. Данные касаются счастья людей в разных странах мира и того, какое отношение ВВП на душу населения имеет к «баллу счастья». Хорошо, у меня работает.

Так или иначе, я отредактировал файл 2019.csv и сохранил два столбца данных и счет. У меня есть столбец 1 = Оценка, и в нем должны быть все нули или единицы (это очень важно). Я переименовал GDP и SS для двух других столбцов и удалил все остальные столбцы.

Score, GDP, SS - столбцы в 2019.csv

Этот код произвел следующий вывод при запуске в PyCharm моменты a go на моем Macbook Pro:

число - «точность»

0,46875

Процесс завершен с кодом выхода 0

так, не так уж хорошо изначально (точность почти 47%), можно легко значительно улучшить ...

from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import pandas as pd

df = pd.read_csv('2019.csv')
df.head()

x = df.drop('Score', axis=1)
y = df.Score

lr = LogisticRegression()
columns = ['GDP', 'SS']

X = df[columns]
y = df["Score"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=0)

lr.fit(X_train, y_train)
predictions = lr.predict(X_test)
accuracy = accuracy_score(y_test, predictions)
print(accuracy)

"" "Это был результат

0,46875

Процесс завершен с кодом выхода 0 "" "

Надеюсь, это поможет.

...