如何用python进行最小二乘分析

首先需要理解基于最小二乘法求解参数。
矩阵表达,几何意义,从概率角度看最小二乘法等价于noise为高斯分布的MLE(极大似然概率)。
正则化,L1Lasso
L2 Ridage岭回归。

其中涉及到了 损失函数,最大似然估计等内容,
损失函数为
在这里插入图片描述
需要做的便是求出该值得最小值,对该损失函数求导,求出倒数为零时即为损失函数最小值,经过一系列计算后得到的结果就是(需要注意的是,由于下面的计算方法需要X为可逆的,这边需要自变量间不能存在多重共线性)在这里插入图片描述
所以用python实现最小二乘法估计的方法如下所示

# 引入所需要的全部包
from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
from pandas import DataFrame

### 设置字符集,防止中文乱码
mpl.rcParams['font.sans-serif']=[u'simHei']
mpl.rcParams['axes.unicode_minus']=False

#导入数据集,看看数据的形式
path1='datas/household_power_consumption_1000.txt'
df = pd.read_csv(path1, sep=';', low_memory=False)#没有混合类型的时候可以通过low_memory=F调用更多内存,加快效率)
print(df.head())
print(df.columns)
#看一下数据
### 实现最小二乘回归分析读取和处理CSV文件 为了利用Python执行偏最小二乘(PLS)回归并处理CSV文件,可以采用`pandas`库来加载数据,并使用`sklearn.cross_decomposition.PLSRegression`来进行模型训练[^1]。 #### 数据导入与预处理 首先安装必要的包(如果尚未安装),可以通过pip完成: ```bash pip install pandas scikit-learn numpy matplotlib seaborn ``` 接着编写如下代码片段以实现目标功能: ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.cross_decomposition import PLSRegression from sklearn.metrics import mean_squared_error, r2_score import matplotlib.pyplot as plt import seaborn as sns import numpy as np # 加载CSV文件中的数据集 data = pd.read_csv('path_to_your_file.csv') # 替换为实际路径 # 假设最后一列为标签列,其余均为特征;可根据实际情况调整 X = data.iloc[:, :-1].values y = data.iloc[:, -1].values # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 对输入变量标准化 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 创建PLS回归对象并指定组件数量n_components pls = PLSRegression(n_components=2) # 训练模型 pls.fit(X_train_scaled, y_train) # 预测新样本的结果 predictions = pls.predict(X_test_scaled) # 输出性能指标 print(f'Mean squared error: {mean_squared_error(y_test, predictions)}') print(f'R² score: {r2_score(y_test, predictions)}') # 可视化预测效果对比图 plt.figure(figsize=(8,6)) sns.scatterplot(x=y_test.flatten(), y=predictions.flatten()) lims = [ np.min([plt.xlim()[0], plt.ylim()[0]]), np.max([plt.xlim()[1], plt.ylim()[1]]) ] plt.plot(lims, lims, 'k-', alpha=0.75, zorder=0) plt.xlabel('真实值') plt.ylabel('预测值') plt.title('PLS Regression Predicted vs Actual Values') plt.show() ``` 这段脚本展示了完整的流程,从数据准备到最终评估模型的表现。通过这种方式能够有效地应用PLS方法于任何给定的数据集上,特别是当面对多维且可能存在多重共线性的数据时更为有效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值