Прежде всего, индексы в python начинаются с 0, поэтому при написании labels = df.columns[2:36]
предполагается, что у вашего целевого столбца есть индекс 1, то есть в человеческом языке это второй, начиная слева (цикл по значениям, столбец 36будет возвращен как столбец 0).Если целевой столбец является первым столбцом, начинающимся слева от вашего кадра данных, вам лучше написать labels = df.columns[1:35]
Некоторые функции, включая логистическую регрессию, уже имеют схему CV, реализованную в sklearn.linear_model.Я советую вам посмотреть здесь , где вы можете увидеть, как его настроить и использовать.
Вы можете попробовать что-то вроде:
from sklearn.linear_model import LogisticRegressionCV
labels = df.columns[1:35] #if indeed your very first column is your target !!
logistic = LogisticRegressionCV(Cs=4, fit_intercept=True, cv=10, verbose =1, random_state=42)
logistic.fit(X, y)
print(logistic.coef_) #weights of each feature
print(logistic.intercept_) #value of intercept
Последний совет:Рекомендуется использовать набор тестов, сгенерированный train_test_split
, но не обучайте его модели.Используйте его только для оценки в самом конце.Это означает, что здесь вы должны согласовать свой алгоритм с X_train
и y_train
и оценить его на X_test
и y_test
, вместо того, чтобы копировать небольшой фрагмент кода, который я написал, где подгонка выполняется на X
иy
, что приведет к чрезмерной оптимистической оценке вашей точности, если оценить вашу модель на X
и y
...