На самом деле у вас проблемы с пониманием вашего собственного кода.
import pandas as pd
data = pd.read_csv("data.csv", header=None, names=['kg', 'cm'])
labels = data['kg']
train1 = data.drop(['kg'], axis=1) # In all honesty, I don't understand this.
До тех пор, пока вы не сделали то, что загрузили фрейм данных.После этого вы отделили X и Y от набора данных.
метки представляют значения y.
train1 представляют значения x.
Поскольку вы написали, вы не можете понять: - train1 = data.drop (['kg'], axis = 1)
Позвольте мне объяснить это.Это происходит из кадра данных, который состоит из столбцов «кг» и «см».Он удаляет столбец «кг» (ось = 1 означает столбец, ось = 0 означает строку).Следовательно, остается только «см», который является вашим х.
from sklearn.cross_validation import train_test_split
x_train, x_test, y_train, y_test = train_test_split(train1, labels, test_size=0.10, random_state=2)
from sklearn.linear_model import LinearRegression
reg = LinearRegression()
reg.fit(x_train, y_train)
reg.score(x_test, y_test)
reg.predict(80) # Gives an incorrect value of about 108.
Теперь вы тренируете модель по значениям x, которые представляют «см», и значениям y, которые представляют «кг».
Когда вы прогнозируете (80), что происходит, вы вводитеЗначение cm должно составлять 80. Позвольте мне построить график «cm» против «kg» для тренировочных данных.
Когда вы вводите рост как80 это означает, что вы идете больше слева, даже больше, чем ваш сюжет.Следовательно, как вы можете видеть, x уменьшает y, увеличивается.Это означает, что уменьшение «см» означает увеличение «кг».Следовательно, выходной сигнал равен 110, что больше.