Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
【计算材料学-从算法原理到代码实现】1.3.6线性回归与最小二乘
《计算材料学》组队共读
计算材料学
从算法原理到代码实现
单斌
华中科技大学
线性回归
最小二乘
stanfordbshan
Mancn
更新于 2024-05-22
推荐镜像 :Basic Image:ubuntu22.04-py3.10
推荐机型 :c2_m4_cpu
income(v1)

©️ Copyright 2024 @ Authors
作者:斯坦福大厨 📨
日期:2024-03-28
共享协议:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

恭喜您已经发现了这份神奇的计算材料学课件!这份课件是我在熬夜吃掉不计其数的披萨和咖啡后创作出来的,配套的教材是由单斌、陈征征、陈蓉合著的《计算材料学--从算法原理到代码实现》。学习资料合集您可以在这个网址找到:www.materialssimulation.com/book,您也可以跟着up主无人问津晦涩难懂的B站视频一起进行学习。希望它能帮您在计算材料学的道路上摔得不那么痛。

就像您尊重那些一边烘焙披萨一边写代码的大厨一样,当您使用这份课件时,请:

  • 记得告诉大家这份课件是斯坦福大厨写的,并且他在华中科技大学微纳中心工作
  • 别用它去赚大钱,这个课件是用来学习的,不是用来买披萨的
  • 保持开放共享的精神

如果你有关于计算材料学的想法,或者你只是想和我讨论最好吃的披萨口味,欢迎通过邮件 bshan@mail.hust.edu.cn 联系我。

代码
文本

目录(对应《计算材料学》章节1.3.6)

点击购书

代码
文本

线性回归

线性回归是统计学中用于预测和分析两个或多个变量之间关系的一种方法。它假设变量之间存在线性关系,即一个变量可以被一个或多个其他变量的线性组合来预测。线性回归在数据科学、金融、生物统计学等众多领域都有应用。

线性回归的基本形式

线性回归模型通常可以表示为:

其中,是因变量(我们想要预测的变量),是自变量(预测变量),是截距项,是模型参数(斜率),代表了自变量对因变量的影响程度,是误差项,代表了除了自变量外影响的其他因素。

最小二乘法(Least Squares Fit)

最小二乘法是线性回归中最常用的参数估计方法。它的目的是找到模型参数的最优估计,使得观察值和模型预测值之间的差异(即误差平方和)最小。具体来说,就是要最小化下面的目标函数:

其中,是第个观察到的因变量值,是模型对第个观察值的预测,是所有观察值的预测误差平方和。

通过求解上述目标函数的最小值,我们可以得到模型参数的最佳估计值。这些参数值定义了最能代表观察数据的线性模型。

线性回归的应用

线性回归广泛应用于预测分析中。例如,在金融领域,可以用它来预测股票价格;在市场营销中,可以用来评估广告投放对销售量的影响;在医疗领域,可以用来研究药物剂量对疗效的影响等。 它可以帮助我们理解和预测变量之间的关系。通过最小二乘法,我们可以有效地估计出模型参数,构建出反映变量之间线性关系的模型。然而,值得注意的是,线性回归模型假设变量之间存在线性关系,因此,在使用线性回归模型之前,应先对数据进行适当的检验,以确保模型假设的合理性。

代码
文本

线性回归实例

我们可以使用numpy里面的lstsq函数来进行数据的最小二乘法拟合。

代码
文本
[5]
# 出于安全考虑,我们没有数据集所在文件夹的写入权限,因此我们将其复制到 `/data/` 目录下:
! cp -nr /bohr/ /personal/

# 我们在这里定义一些路径,并切换到工作路径,方便后续调用:
import os
bohr_dataset_url = "/bohr/cms-am10/v1/" # url 可从左侧数据集复制
work_path = os.path.join("/personal", bohr_dataset_url[1:]) # 进行一个切片以删除上述路径中最开始的“/”
os.chdir(work_path)
print(f"当前路径为:{os.getcwd()}")
当前路径为:/personal/bohr/cms-am10/v1
代码
文本
[13]
# 安装 Matplotlib、sklearn
! pip install matplotlib
! pip install scikit-learn
已隐藏输出
代码
文本
[9]
import pandas as pd
import numpy as np
# Read the data from the CSV file
data = pd.read_csv('income.csv')

# Extract the education and income columns
education = data['Education']
income = data['Income']

# Create a matrix of ones and education values
X = np.column_stack([np.ones(len(education)), education])

# Solve the least squares problem
coefficients = np.linalg.lstsq(X, income, rcond=None)[0]

# Print the coefficients
print(coefficients)

# Visualize the results
import matplotlib.pyplot as plt

plt.scatter(education, income, color='blue',label='Actual data')
plt.plot(education, X.dot(coefficients), color='red',label='Linear regression fit')
plt.title('Least Square Fit: Education vs Income')
plt.legend()
plt.show()

[-39.44625668   5.59948287]
代码
文本

或者我们也可以调用scikit-learn里面的LinearRegression模块来进行线性拟合。两者给出完全一致的结果

代码
文本
[14]
import pandas as pd
from sklearn.linear_model import LinearRegression
import numpy as np
import matplotlib.pyplot as plt

# Read the data from the CSV file
data = pd.read_csv('income.csv')

# Extract the education and income columns
X = data['Education'].values.reshape(-1, 1)
Y = data['Income'].values

# Create a linear regression model
model = LinearRegression()

# Fit the model with the data
model.fit(X, Y)

# Make predictions
income_pred = model.predict(X)

# Plotting the results
plt.scatter(X, Y, color='blue', label='Actual data')
plt.plot(X, income_pred, color='red', linewidth=3, label='Linear regression fit')
plt.xlabel('Education')
plt.ylabel('Income')
plt.title('Linear Regression: Education vs Income')
plt.legend()
plt.show()

# Print the coefficients
print(f"Coefficient (slope): {model.coef_[0]}")
print(f"Intercept: {model.intercept_}")

Coefficient (slope): 5.59948287411992
Intercept: -39.446256679096194
代码
文本
《计算材料学》组队共读
计算材料学
从算法原理到代码实现
单斌
华中科技大学
线性回归
最小二乘
点个赞吧
本文被以下合集收录
计算材料学:从算法原理到代码实现
stanfordbshan
更新于 2024-08-19
11 篇6 人关注
推荐阅读
公开
【计算材料学-从算法原理到代码实现】8.5.2二维Ising模型的Python实现
从算法原理到代码实现Deep LearningIsingPythong华中科技大学单斌
stanfordbshan
更新于 2024-05-22
1 转存文件
公开
【计算材料学-从算法原理到代码实现】6.1.2三体问题Lyapunov不稳定性
《计算材料学》组队共读计算材料学从算法原理到代码实现华中科技大学单斌Lyapunov分子动力学
stanfordbshan
更新于 2024-05-22