Недавно нашел много полезного в публикации Medium Построение логистической регрессии в Python, шаг за шагом Сьюзан Ли. https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8
Предварительный анализ обучающего набора данных должен включать
1) Анализ исследования данных с помощью графиков кросс-таблиц
2) SMOTE (Synthetic Minority Oversampling Technique) передискретизация
3) Алгоритм преобразования нечисловых данных в числовые с рекурсивным устранением признаков (RFE)
Решил воспроизвести расчёты на Python и обнаружил 2 ошибки — 1) в этом фрагменте кода нужна функция fit_resample() вместо fit_sample.
y = data_final.loc[:, data_final.columns == 'y']from imblearn.over_sampling import SMOTEos = SMOTE(random_state=0) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0) columns = X_train.columnsos_data_X,os_data_y=os.fit_resample(X_train, y_train) os_data_X = pd.DataFrame(data=os_data_X,columns=columns ) os_data_y= pd.DataFrame(data=os_data_y,columns=['y']) # we can Check the numbers of our data print("length of oversampled data is ",len(os_data_X)) print("Number of no subscription in oversampled data",len(os_data_y[os_data_y['y']==0])) print("Number of subscription",len(os_data_y[os_data_y['y']==1])) print("Proportion of no subscription data in oversampled data is ",len(os_data_y[os_data_y['y']==0])/len(os_data_X)) print("Proportion of subscription data in oversampled data is ",len(os_data_y[os_ data_y['y']==1])/len(os_data_X))
Вторая ошибка была действительно незначительной, весь исправленный код .ipynb с дополнениями можно найти по ссылке на gitlab.
Удивительно, но точность логистической регрессии выросла с 74% до 84% для того же набора данных.
Затем решил проверить, какие методы Scikit-learn ML могут еще больше повысить точность. Со следующими результатами для точности
Случайный Форрест 91,15%
Дерево решений 91,26%
КНН 90,76%
82,86% сингапурских долларов
Гауссовский наивный байесовский метод 81,39%
Такой предварительный анализ сам по себе может быть компьютеризирован и чрезвычайно важен, поскольку он дает ключ к пониманию лежащей в основе физики проблемы реального мира, к наиболее важным моделям процессов и может привести к новым показателям. Во многих случаях задачи распознавания могут быть решены с достаточно высокой точностью еще до МО.