Проблема ставится следующим образом:

Задача:

Предсказать процент студента на основе нет. учебных часов.

Описание:

  1. Это простая задача линейной регрессии, так как она включает всего 2 переменные.
  2. мы можем использовать Python или любой другой инструмент.
  3. Данные можно найти по адресу http://bit.ly/w-data.
  4. Какой прогнозируемый балл будет, если студент будет заниматься 9,25 часа в день?

Решение разделено на следующие разделы:

  • Чтение данных
  • Визуализация данных
  • Предварительная обработка данных
  • Обучение модели
  • Регрессия
  • Прогноз
  • Сравнение фактического результата
  • Оценка результата
  • Заключение

Шаг 1. Импорт необходимых библиотек

# Importing the required libraries
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

Шаг 2. Чтение данных из источника

# Reading data from remote link
url = r"https://raw.githubusercontent.com/AdiPersonalWorks/Random/master/student_scores%20-%20student_scores.csv"
s_data = pd.read_csv(url)
print("Data import successful")

s_data.head()

Шаг 3. Визуализация входных данных

# Plotting the distribution of scores
s_data.plot(x='Hours', y='Scores', style='o')  
plt.title('Hours vs Percentage')  
plt.xlabel('Hours Studied')  
plt.ylabel('Percentage Score')  
plt.show()

Шаг 4. Предварительная обработка данных

X = s_data.iloc[:, :-1].values  
y = s_data.iloc[:, 1].values

Шаг 5. Обучение модели

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) 
regressor = LinearRegression()  
regressor.fit(X_train.reshape(-1,1), y_train) 

print("Training complete.")

Шаг 6. Построение линии регрессии

# Plotting the regression line
line = regressor.coef_*X+regressor.intercept_

# Plotting for the test data
plt.scatter(X, y)
plt.plot(X, line,color='red');
plt.show()

Шаг 7. Делаем прогнозы

# Testing data
print(X_test)
# Model Prediction 
y_pred = regressor.predict(X_test)

Шаг 8. Сравнение фактического результата с результатом прогнозируемой модели

# Comparing Actual vs Predicted
df = pd.DataFrame({'Actual': y_test, 'Predicted': y_pred}) 
df
#Estimating training and test score
print("Training Score:",regressor.score(X_train,y_train))
print("Test Score:",regressor.score(X_test,y_test))
# Plotting the Bar graph to depict the difference between the actual and predicted value

df.plot(kind='bar',figsize=(5,5))
plt.grid(which='major', linewidth='0.5', color='red')
plt.grid(which='minor', linewidth='0.5', color='blue')
plt.show()
# Testing the model with our own data
hours = 9.25
test = np.array([hours])
test = test.reshape(-1, 1)
own_pred = regressor.predict(test)
print("No of Hours = {}".format(hours))
print("Predicted Score = {}".format(own_pred[0]))

Шаг 9. Оценка модели

from sklearn import metrics  
print('Mean Absolute Error:',metrics.mean_absolute_error(y_test, y_pred)) 
print('Mean Squared Error:', metrics.mean_squared_error(y_test, y_pred))
print('Root Mean Squared Error:', np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
print('R-2:', metrics.r2_score(y_test, y_pred))

Шаг 10. Заключение

Мне удалось успешно выполнить прогнозирование с помощью задачи машинного обучения с учителем и оценить производительность модели по различным параметрам. Спасибо.