Здравствуйте, Data Family, сегодня мы увидим, как применить линейную регрессию к набору данных учащихся с помощью Python.

ссылка: http://bit.ly/w-data

  1. Здесь мы импортируем 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.