Как реализовать множественную регрессию? - PullRequest
0 голосов
/ 21 апреля 2020

Я практикую простые регрессионные модели как введение в машинное обучение. Я рассмотрел несколько образцов моделей множественной регрессии, которая, как мне кажется, является расширением линейной регрессии, но с более чем 1 признаком. Из примеров, которые я видел, синтаксис одинаков для линейной регрессии и множественной регрессии. Я получаю эту ошибку при выполнении кода ниже:

ValueError: x and y must be the same size.

Почему я получаю эту ошибку и как ее исправить?

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

df = pd.read_csv(r"C:\Users\****\Desktop\data.csv")

#x.shape =(20640, 2), y=(20640,)
X = df[['total_rooms', 'median_income']]
y = df['median_house_value']

X_test, y_test, X_train, y_train = train_test_split(X, y, test_size=.2, random_state=0)

reg = LinearRegression()
reg.fit(X_train, y_train)

Я пропустил шаг? Спасибо за ваше время.

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

У вас есть ошибка в вашем train_test_split - порядок результатов имеет значение; правильное использование:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=0)

Проверьте документацию .

0 голосов
/ 21 апреля 2020

Вам не нужно делать ничего, что вы не хотите делать :-). Но, вообще говоря, вы захотите как-то справиться с такими вещами, как мультиколлинеарность, но это не обязательно означает уменьшение размерности.

Какова форма ваших данных? Если у вас есть, скажем, 20 объектов, но 10 тыс. Наблюдений, не нужно уменьшать размерность (по крайней мере, не в первом проходе).

Но если у вас есть, например, 1 тыс. Объектов и 10 тыс. Наблюдений, то Вы будете хорошо подходить для неконтролируемого шага по уменьшению размерности перед учеником.

Возможно, вы захотите сначала попробовать некоторую регуляризацию (см. https://web.stanford.edu/~hastie/ElemStatLearn/ - вы можете скачать книгу бесплатно оттуда).

Так, например, попробуйте использовать класс ElasticNet вместо класса LinearRegression. Это почти то же самое, но со штрафом к нормам весов $ L_1 $ и $ L_2 $. Это может помочь с обобщением.

Не зная гораздо больше о вашей конкретной проблеме, трудно сказать что-либо еще.

...