Я пытаюсь создать простую модель линейной регрессии с csv-файлом данных о зарплате , и в нем 35 точек данных . как мне разделить его на 80-20?

#python

Вопрос:

 # split train test data
from sklearn.model_selection import train_test_split

X_train, y_train, X_test, y_test = train_test_split(x, y, test_size=0.2, random_state=1)

# import required modules and train the ML algorithm
from sklearn.linear_model import LinearRegression

regressor = LinearRegression()
regressor.fit(X_train, y_train)
 

я получаю ошибку-
Найдены входные переменные с несогласованным количеством выборок: [28, 7]

Комментарии:

1. Порядок train_test_split выдачи таков X_train, X_test, y_train, y_test , как указано в документации .

Ответ №1:

По данным csv зарплаты я возьму этот в качестве примера https://www.kaggle.com/karthickveerakumar/salary-data-simple-linear-regression

 from sklearn.model_selection import train_test_split 
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression 

#Import the dataset
salary_data=pd.read_csv("/mnt/c/Users/XXXXXXX/Downloads/Salary_Data.csv")

# Here you can split your dataset between train and test using 80% for train
X_train,  X_test, y_train, y_test = train_test_split(salary_data["YearsExperience"], salary_data["Salary"], test_size=0.2, random_state=1)


#Then you can fit your linear model on train dataset 
#Here the goal is to modelize salary considering years of XP
regressor = LinearRegression() 
model = regressor.fit(X_train.values.reshape(-1, 1),y_train.values.reshape(-1, 1))

#Let's plot our model prediction on whole data and compare to real data
plt.title("Salary/Years of XP")
plt.ylabel("Salary $")
plt.xlabel("Years")
plt.plot(salary_data["YearsExperience"],salary_data["Salary"],color="blue",label="real data")
plt.plot(salary_data["YearsExperience"],model.predict(salary_data["YearsExperience"].values.reshape(-1,1)),color="red",label="linear model")
plt.legend()
plt.show()

 

введите описание изображения здесь

Комментарии:

1. вы можете видеть, что связь между годами опыта работы и зарплатой хорошо согласуется с простой моделью линейной регрессии