#python #machine-learning #scikit-learn #coefficients
#python #машинное обучение #scikit-learn #коэффициенты
Вопрос:
Я провожу линейный регрессионный анализ набора данных домов (можно найти здесь: https://www.kaggle.com/shree1992/housedata ). У меня есть следующий код (см. image1): image1
На изображении показано, что когда я печатаю среднюю цену для каждого количества спален, тенденция такова, что цена растет с увеличением количества спален. При выполнении одиночной линейной регрессии я получаю положительный коэффициент для спален, чего я и ожидал. (см. Изображение 2) изображение 2
Хотя, когда я выполняю множественную линейную регрессию (добавляю больше объектов / столбцов) в набор данных и печатаю coef_, я получаю отрицательный coef_ для спален (см. Изображение 3). image3
Как это имеет смысл, когда средняя цена увеличивается с увеличением количества спален?
houses_preprocessed = houses[
(houses.price<1.2*10**7) amp;
(houses.bedrooms>0) amp;
(houses.bedrooms <= 6) amp;
(houses.bathrooms>0) amp;
(houses.price>8000)].drop(columns=['country', 'date', 'street', 'city'])
houses_preprocessed.loc[houses_preprocessed['yr_renovated'] < 1, 'yr_renovated'] = 0
houses_preprocessed.loc[houses_preprocessed['yr_renovated'] > 1, 'yr_renovated'] = 1
X = houses_preprocessed[['bedrooms', 'bathrooms', 'sqft_living', 'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated']]
y = houses_preprocessed[['price']]
X_train, X_test, y_train, y_test = train_test_split(X,y)
reg = LinearRegression()
reg.fit(X_train, y_train)
K=reg.coef_
K
coef_dict = {}
for K, name in zip(K,X):
coef_dict[name] = K
coef_dict
# Create a list of tuples sorted by index 1 i.e. value field
listofTuples = sorted(coef_dict.items(), key=lambda e:e[1])
# Iterate over the sorted sequence
for elem in listofTuples :
print(elem[0] , " ::" , elem[1] )
Комментарии:
1. можете ли вы поделиться своим кодом и какие именно функции вы добавляете?
2. @Gray_Rhino Я добавил свой код
3. Сначала
X
это массив точек данных, затем вы используете егоzip(K, X)
для имени столбца. Разве это не должно быть `zip (K, X.столбцы)’?