4 numpy matplotlib curve-fitting scikit-learn
我试图制作线性回归模型,从父亲的长度预测儿子的长度
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
%matplotlib inline
from sklearn.linear_model import LinearRegression
Headings_cols = ['Father', 'Son']
df = pd.read_csv('http://www.math.uah.edu/stat/data/Pearson.txt',
delim_whitespace=True, names=Headings_cols)
X = df['Father']
y = df['Son']
model2 = LinearRegression()
model2.fit(y, X)
plt.scatter(X, y,color='g')
plt.plot(X, model.predict(X),color='g')
plt.scatter(y, X, color='r')
plt.plot(y, X, color='r')
Run Code Online (Sandbox Code Playgroud)
我收到错误
ValueError: could not convert string to float: 'Father'
Run Code Online (Sandbox Code Playgroud)
第二件事是计算儿子的平均长度,以及平均值的标准误差?
Imp*_*est 14
这里有两个主要问题:
sklearn.LinearRegression.fit
可理解的形状1.获取数据
源文件包含带有列名称的标题行.我们不希望在数据中使用列名,因此在将整个数据读入数据帧后df
,我们可以告诉它使用第一行作为标题
df.head()
.这允许稍后通过列名称查询数据帧,即df['Father']
.
2.使数据成形
这sklearn.LinearRegression.fit
需要两个参数.首先是"训练数据",它应该是2D阵列,其次是"目标值".在这里考虑的情况下,我们只是简单地做了什么,所以我们不太关心这些概念,但我们需要将该函数的第一个输入带入所需的形状.这可以通过为其中一个阵列创建一个新轴来轻松完成,即df['Father'].values[:,np.newaxis]
完整的工作机会:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
from sklearn.linear_model import LinearRegression
df = pd.read_csv('http://www.math.uah.edu/stat/data/Pearson.txt',
delim_whitespace=True)
df.head() # prodce a header from the first data row
# LinearRegression will expect an array of shape (n, 1)
# for the "Training data"
X = df['Father'].values[:,np.newaxis]
# target data is array of shape (n,)
y = df['Son'].values
model2 = LinearRegression()
model2.fit(X, y)
plt.scatter(X, y,color='g')
plt.plot(X, model2.predict(X),color='k')
plt.show()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10366 次 |
最近记录: |