数据的回归与分类分析

数据的回归与分类分析

一、线性回归练习

1.父亲-孩子x-y线性回归方程

删除重复选项:

在数据分析中选择回归:

结果:

方程为y=0.2978x+49.15。其中决定系数为1,说明有极高的相关性。
如果父亲身高75,孩子身高为71.485英寸

同理,母亲的回归方程:

方程为y=0.3334x+48.472。其中决定系数为1,说明有极高的相关性。
由此可知,“父亲高则儿子高,父亲矮则儿子矮”(即父亲与儿子身高相关,且为正相关)、“母高高一窝,父高高一个”(即母亲的身高比父亲的身高对子女的影响更大)的习俗传说是有相关依据的。

二、线性回归方法的有效性判别

图一:

从图中可以看出线性并不是很能够表现原始数据的一个变化趋势,所有该线性回归方程不成立。

图二:

从图中可以看出线性并不是很能够表现原始数据的一个变化趋势,所有该线性回归方程不成立。通过采用其他的回归曲线来测试,发现对于2次的多项式的回归方程来说,会比线性回归方程更好表现数据的变化趋势。

图三:

该线性回归方程基本能够体现该数据集的一个变化情况。

图四:

该线性回归方程不成立。

三、python和anaconda的安装

参考https://blog.csdn.net/ITLearnHall/article/details/81708148该教程

四、鸢尾花数据集使用SVM线性分类

得到所需要的数据

# 获取所需数据集
iris=datasets.load_iris()
#每行的数据,一共四列,每一列映射为feature_names中对应的值
X=iris.data
#每行数据对应的分类结果值(也就是每行数据的label值),取值为[0,1,2]
Y=iris.target
#通过Y=iris.target.size,可以得到一共150行数据,三个类别个50条数据,并且数据是按照0,1,2的顺序放的

处理数据

#只取y<2的类别,也就是0 1并且只取前两个特征
X=X[:,:2]
#获取0 1类别的数据
Y1=Y[Y<2]
y1=len(Y1)
#获取0类别的数据
Y2=Y[Y<1]
y2=len(Y2)
X=X[:y1,:2]

绘图

#绘制出类别0和类别1
plt.scatter(X[0:y2,0],X[0:y2,1],color='red')
plt.scatter(X[y2+1:y1,0],X[y2+1:y1,1],color='blue')
plt.show()

数据归一化

#标准化
standardScaler=StandardScaler()
standardScaler.fit(X)
#计算训练数据的均值和方差
X_standard=standardScaler.transform(X)
#用scaler中的均值和方差来转换X,使X标准化
svc=LinearSVC(C=1e9)
svc.fit(X_standard,Y1)

画出决策边界

def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(
        np.linspace(axis[0], axis[1], int((axis[1]-axis[0])*100)).reshape(-1, 1),# 600个,影响列数
        np.linspace(axis[2], axis[3], int((axis[3]-axis[2])*100)).reshape(-1, 1),# 600个,影响行数
    )
    # x0 和 x1 被拉成一列,然后拼接成360000行2列的矩阵,表示所有点
    X_new = np.c_[x0.ravel(), x1.ravel()]    # 变成 600 * 600行, 2列的矩阵

    y_predict = model.predict(X_new)   # 二维点集才可以用来预测
    zz = y_predict.reshape(x0.shape)   # (600, 600)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])    
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
        #print(X_new)
plot_decision_boundary(svc, axis=[-3, 3, -3, 3])
plt.scatter(X_standard[0:y2,0], X_standard[0:y2,1],color='red')
plt.scatter(X_standard[y2:y1,0], X_standard[y2:y1,1],color='blue')
plt.show()

posted @ 2021-03-12 10:05  一蓑烟雨任平生噶  阅读(350)  评论(0)    收藏  举报