Здравствуйте, Data Family, сегодня мы увидим, как применить линейную регрессию к набору данных учащихся с помощью Python.
ссылка: http://bit.ly/w-data
- Здесь мы импортируем pandas, Matplotlib, линейную регрессию и разделение тестов поезда из библиотеки обучения sci-kit.
# Importing all libraries required in this notebook import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import LinearRegression from sklearn.model_selection import train_test_split %matplotlib inline
2 . После импорта библиотек давайте прочитаем и изучим набор данных учащихся.
#Reading Data data=pd.read_csv("http://bit.ly/w-data") print(data.shape) print(data.head())
3. Разделение независимых и зависимых переменных. Независимая переменная — это та переменная, которая поможет в вашем прогнозе. Зависимые переменные являются переменными предсказания. Часы(X) – это независимая переменная, а баллы (Y) – зависимая переменная. Y = mX + b. «b» — точка пересечения, а «m» — наклон.
#Collecting X and Y x=data['Hours'].values y=data['Scores'].values print("X values: ",X) print("Y values: ",Y)
4. Давайте посмотрим, как переменные X и Y связаны друг с другом. Построение точечной диаграммы для визуализации взаимосвязи между часами и баллами.
data.plot(x='Hours',y='Scores',kind='scatter',title='Study Hours vs Scores') plt.show()
5. Пробное разделение поездов для обучения под наблюдением. Этот метод разбивает набор данных на случайные данные обучения и тестирования. Размер тестовых данных составляет 20 % данных, а размер обучающих данных — 80 % данных.
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)
6. Нанесение тестовых и обучающих точек данных
plt.scatter(x_train,y_train,label='Training Data',alpha=0.7 ,color='r') plt.scatter(x_test,y_test,label='Testing Data',alpha=0.7,color='g') plt.legend() plt.show()
7. Создание и обучение модели линейной регрессии на данных учащихся
reg=LinearRegression() reg.fit(x_train.reshape(-1,1),y_train) print("Successfully Trained the Data")
8. Построение линии регрессии и обученных данных
# Plotting the regression line line = reg.coef_*x+reg.intercept_ # Plotting for the test data plt.scatter(X, y,color='g',label='Data points') plt.plot(X, line,color='b',label='Regression Line'); plt.legend() plt.show()
9. Прогнозирование результатов учащихся и помещение результатов в таблицу данных.
#Using Model to predict the data prediction=reg.predict(x_test.reshape(-1,1)) df=pd.DataFrame({'x_test':x_test,'predicted_score':prediction}) df
10. Сравнение фактического и прогнозируемого показателей. Давайте посмотрим во фрейме данных.
df=pd.DataFrame({'Actual_Scores':y_test,'Predicted_Scores':prediction}) df
11. Предсказать счет студента, когда его учебные часы 9.25?
#predicting Score when study hours are 9.25 no_of_hours=np.array(9.25) score=reg.predict(no_of_hours.reshape(-1,1)) print('No Of Hours: ',no_of_hours) print('Expected Score : ',score) No Of Hours: 9.25 Expected Score : [93.69173249]
12. Оценка модели
#Score Of The Model goodness=reg.score(x_test.reshape(-1,1),y_test) goodness 0.9454906892105355
Оценка нашей модели составляет 0,945. это означает, что мы построили отличную модель, которая почти точна. Хорошая модель всегда будет близка к 1, а плохая модель будет давать оценку, отличную от 1.