给plt.scatter加相关分析线
时间: 2023-10-14 16:20:36 浏览: 73
要给 `plt.scatter` 加相关分析线,可以使用 `numpy` 库计算出数据的相关系数,然后使用 `plt.plot` 画出相关分析线。以下是一个简单的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 生成数据
x = np.random.rand(50)
y = 2 * x + np.random.rand(50)
# 计算相关系数
corr_coef = np.corrcoef(x, y)[0, 1]
# 绘制散点图和相关分析线
plt.scatter(x, y)
plt.plot([min(x), max(x)], [min(x) * corr_coef, max(x) * corr_coef], color='red')
# 添加图例和坐标轴标签
plt.legend(['Correlation analysis line'], loc='upper left')
plt.xlabel('x')
plt.ylabel('y')
# 显示图形
plt.show()
```
在这个示例中,我们首先生成了一些随机数据,然后使用 `np.corrcoef` 函数计算出数据的相关系数。然后,我们使用 `plt.plot` 画出相关分析线,这条线的斜率就是相关系数。最后,我们添加了图例和坐标轴标签,并使用 `plt.show` 显示图形。
相关问题
data = pd.read_csv('/home/w123/Documents/fatigue_detecting-master/TXT-data/5.14/2/Eye aspect ratio.txt') y = data.iloc[:, :-1].values.reshape(-1, 1) X = data.iloc[:, -1].values.reshape(-1, 1) regressor = LinearRegression() regressor.fit(X, y) y_pred = regressor.predict(X) print("Regression Function: y = {:.2f} + {:.2f}x".format(regressor.intercept_[0], regressor.coef_[0][0])) plt.scatter(X, y, color='blue') plt.plot(X, y_pred, color='red') plt.title('Linear Regression') plt.xlabel('Independent Variable') plt.ylabel('Dependent Variable') plt.legend(['Regression Line', 'Observations']) plt.show()改成x,y,z数据分析
假设你有一个名为data的Pandas DataFrame,其中包含三列数据,分别是x,y和z。那么你可以使用以下代码进行线性回归分析:
```
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('/path/to/data.csv')
# 将数据分成x、y、z三个变量
x = data['x'].values.reshape(-1, 1)
y = data['y'].values.reshape(-1, 1)
z = data['z'].values.reshape(-1, 1)
# 创建线性回归模型
regressor = LinearRegression()
# 训练模型
regressor.fit(np.hstack((x, y)), z)
# 预测z值
z_pred = regressor.predict(np.hstack((x, y)))
# 打印回归方程
print("Regression Function: z = {:.2f} + {:.2f}x + {:.2f}y".format(
regressor.intercept_[0], regressor.coef_[0][0], regressor.coef_[0][1]))
# 绘制散点图和回归线
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z, c='blue', marker='o')
ax.plot_surface(x, y, z_pred.reshape(x.shape), color='red', alpha=0.5)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
plt.show()
```
这段代码将数据分成了x、y、z三个变量,然后使用`np.hstack`将x和y合并为一个2D数组,作为线性回归模型的输入。然后训练模型,并使用`np.hstack`将x和y合并为一个2D数组,作为预测z值的输入。最后,绘制了3D散点图和回归平面。
import numpy as np import matplotlib.pyplot as plt import pandas as pd w = pd.read_csv('BostonHousing2.csv') w_new=w.drop(columns=["chas"],axis=1) wn0 = w_new.columns wn = wn0[5:] f = plt.figure(figsize=(16,8)) k=0 for i in range(len(wn)): for j in range(len(wn)): k=k+1 if i!=j: f.add_subplot(len(wn),len(wn),k) else: f.add_subplot(len(wn),len(wn),k) plt.scatter([0,1],[0,1]) plt.text(.5,.5,wn[i],\ ha='center',va='center',size=10) y=np.array(w[wn[0]])[:,np.newaxis] X=np.array(w[wn[1:]]) from sklearn import linear_model regr=linear_model.LinearRegression(fit_intercept=False) regr.fit(X,y) print(regr.coef_) res=y-regr.predict(X) import scipy.stats as stats import pylab res.shape=res.shape[0] f=plt.figure(figsize=(12,5)) f.add_subplot(121) plt.scatter(regr.predict(X),res) plt.plot(regr.predict(X),np.ones(len(y))) plt.xlabel('Fitted values') plt.ylabel('Residuals') f.add_subplot(122) stats.probplot(res,dist="norm",plot=pylab) plt.show() from sklearn.tree import DecisionTreeRegressor from sklearn import tree import graphviz regr2 =DecisionTreeRegressor(max_depth=4,random_state=100) regr2 = regr2.fit(X,y) dot_data=tree.export_graphviz(regr2,feature_names=wn[1:],out_file=None) graph=graphviz.Source(dot_data) f=plt.figure(figsize=(12,5)) f.add_subplot(111) height=regr2.feature_importances_ bars = wn[1:] y_pos=np.arange(len(bars)) plt.bar(y_pos,height) plt.xticks(y_pos,bars) plt.yticks() plt.show() 分析上述代码的运行结果
这段代码的运行结果将显示出多个图表和一些数字输出。
首先,代码中的循环将生成一个图表,该图表的每个子图都是特征与特征之间的散点图。这些散点图中,特征与自身的散点图上会显示特征的名称。
接下来,代码计算了线性回归模型的系数(coef_),并将预测值与实际值之间的残差保存在变量res中。然后,它绘制了两个子图:左边的子图显示了预测值与残差之间的散点图,并画出了一条水平线表示残差为1的边界;右边的子图是正态概率图,用于检验残差是否符合正态分布。
接下来,代码使用决策树回归模型进行拟合,并使用graphviz库将决策树可视化为一个图形。这部分代码将生成一个决策树模型的可视化结果。
最后,代码绘制了一个柱状图,显示了特征的重要性。柱状图的x轴是特征的名称,y轴是特征的重要性值。
请注意,以上结果是根据'BostonHousing2.csv'文件和特定参数设置得出的。如果你使用不同的数据集或参数,可能会得到不同的结果。
阅读全文