数据挖掘——正规方程拟合直线

一、问题描述

假设平面上3个点: (-1.0,-1.2) , (0.0,1.0),  (1.0,2.8)。

    (1)请写出相应的正规方程。

    (2)并通过求解正规方程来计算这3个点的最佳直线拟合。

二、实验目的

      画出原始数据的散点图;

      画出拟合的直线。

三、实验内容

      1、首先对数据进行特征处理

      2、然后求出正规方程的最优解

      3、通过最优解预测数据

四、实验结果及分析

五、完整代码

机器学习GitHub:https://github.com/wanglei18/machine_learning

linear_regression.py

import numpy as np

class LinearRegression:
    def fit(self, X, y):
        self.w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)  #最优解
        return 
    
    def predict(self, X):           #预测
        return X.dot(self.w)

def mean_squared_error(y_true, y_pred):                 #h的均方误差
    return np.average((y_true - y_pred)**2, axis=0)     #axis = 0 按列计算
    
def r2_score(y_true, y_pred):           #R^2的决定系数
    numerator = (y_true - y_pred)**2
    denominator = (y_true - np.average(y_true, axis=0))**2
    return 1- numerator.sum(axis=0) / denominator.sum(axis=0)   #按列计算
import numpy as np
import matplotlib.pyplot as plt
import machine_learning.linear_regression.lib.linear_regression as lib

def mean_squared_error(y_true, y_pred):  # h的均方误差
    return np.average((y_true - y_pred) ** 2, axis=0)  # axis = 0 按列计算

def r2_score(y_true, y_pred):  # R^2的决定系数
    numerator = (y_true - y_pred) ** 2
    denominator = (y_true - np.average(y_true, axis=0)) ** 2
    return 1 - numerator.sum(axis=0) / denominator.sum(axis=0)  # 按列计算

def process_features(X):            #特征处理
    m,n = X.shape
    X = np.c_[np.ones((m,1)), X]    #按行连接,(1,x)
    return X

plt.figure(1)
x = np.mat([[-1.0],[0.0],[1.0]])
y = np.mat([[-1.2],[1.0],[2.8]])
plt.plot(x[:, 0], y[:, 0],"bs", ms=3)

x_train = process_features(x)

model = lib.LinearRegression()

model.fit(x_train, y)
print(model.w)

y_pred = model.predict(x_train)
plt.plot(x,y_pred)
plt.show()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李逍遥~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值