Я использую код прогноза погоды на ноутбуке Jupyter python - PullRequest
0 голосов
/ 02 мая 2020

Я работаю над проектом машинного обучения по линейной регрессии по прогнозированию погоды. Я использовал следующий код, но я получаю сообщение об ошибке only 2 arguments accepted Код показан ниже:

from sklearn.linear_model import LinearRegression
import numpy as np
X=df.drop(['PrecipitationSumInches'], axis=1)
Y=df['PrecipitationSumInches']
Y=Y.values.reshape(-1,1)
day_index=798
days=[i for i in range(Y.size)]
clf=LinearRegression()
clf.fit(X,Y)
inp=np.array([74],[60],[45],[67],[49],[43],[33],[45],[57], 
[29.68],[10],[7],[2],[0],[20],[4],[31])
inp=inp.reshape(1,-1)
print("The Precipitation in inches for the input is:",
clf.predict(inp))

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

У вас есть несколько проблем здесь. Давайте сделаем шаг назад и решим простую регрессионную проблему - каноническую проблему жилья в Бостоне. Скопируйте / вставьте приведенный ниже код в свою среду Python, запустите его, проверьте результаты и отправьте сообщение, если у вас остались вопросы.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#%matplotlib inline
import sklearn

from sklearn.datasets import load_boston
boston = load_boston()

# Now we will load the data into a pandas dataframe and then will print the first few rows of the data using the head() function.
bos = pd.DataFrame(boston.data)
bos.head()


bos.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT']
bos.head()

bos['MEDV'] = boston.target


bos.describe()

bos.isnull().sum()



sns.distplot(bos['MEDV'])
plt.show()

enter image description here sns.pairplot (бос)

enter image description here

corr_mat = bos.corr().round(2)

enter image description here

sns.heatmap(data=corr_mat, annot=True)

enter image description here

sns.lmplot(x = 'RM', y = 'MEDV', data = bos)

enter image description here

X = bos[['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX','PTRATIO', 'B', 'LSTAT']]
y = bos['MEDV']


from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 10)

# Training the Model
# We will now train our model using the LinearRegression function from the sklearn library.

from sklearn.linear_model import LinearRegression
lm = LinearRegression()
lm.fit(X_train, y_train)

# Prediction
# We will now make prediction on the test data using the LinearRegression function and plot a scatterplot between the test data and the predicted value.

prediction = lm.predict(X_test)
plt.scatter(y_test, prediction)

enter image description here

df1 = pd.DataFrame({'Actual': y_test, 'Predicted':prediction})
df2 = df1.head(10)
df2

df2.plot(kind = 'bar')

from sklearn import metrics
from sklearn.metrics import r2_score
print('MAE', metrics.mean_absolute_error(y_test, prediction))
print('MSE', metrics.mean_squared_error(y_test, prediction))
print('RMSE', np.sqrt(metrics.mean_squared_error(y_test, prediction)))
print('R squared error', r2_score(y_test, prediction))

Результат :

MAE 4.061419182954711
MSE 34.413968453138565
RMSE 5.866341999333023
R squared error 0.6709339839115628

https://acadgild.com/blog/linear-regression-on-boston-housing-data

Также проверьте это.

https://github.com/chatkausik/Linear-Regression-using-Boston-Housing-data-set/blob/master/Mini_Project_Linear_Regression.ipynb

В сети есть и другие похожие примеры. Проверьте набор данных Iris и попытайтесь регрессировать на этом. Есть так много примеров. Скопируйте / вставьте простой код, запустите его и вернитесь сюда с вопросами, если у вас остались вопросы (многие из них очевидны). Помните, вы выходите из этого, что вы вкладываете в это.

0 голосов
/ 02 мая 2020

Это не способ создать массив с numpy.

Изменить

inp=np.array([74],[60],[45],[67],[49],[43],[33],[45],[57],[29.68],[10],[7],[2],[0],[20],[4],[31])

На:

inp=np.array([74,60,45,67,49,43,33,45,57,29.68,10,7,2,0,20,4,31])

И, пожалуйста, в следующий раз отформатируйте ваш код и добавьте трассировку ошибок.

...