最简单的线性回归模型 李烨_模型

该博客介绍了一个取自gitchat李烨老师课程的模型,旨在弄清楚工作年龄与薪资间的函数关系。先对两者关系做出假设,探讨了线性回归能解决确定模型后使误差最小的参数值,不能解决模型选取问题,还给出代码链接,最后提及预测结果。

标题

本模型取自gitchat 中李烨老师的课程,

本模型要解决的问题

如下图,左侧是工作年龄,右侧是薪资,
我们想弄清楚 y 与 x 间的函数关系
在这里插入图片描述

必要的假设

我们必须先对y 与 x 的关系做出假设,
假设: y = a + b x,

线性回归能做什么,不能做什么

  1. 注意,线性回归能解决的问题是:在模型确定下来后, a,b值为多少时,误差最小
  2. 不能解决的问题是: 模型到底取 y =a+bx ? 还是取 y=a+bx+cx²?

代码

#version:py3
#author:kaka

#导包
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model


experiences = np.array([0,1,2,3,4,5,6,7,8,9,10])
salaries = np.array([103100, 104900, 106800, 108700, 110400, 112300, 114200, 116100, 117800, 119700, 121600])

# 将特征数据集分为训练集和测试集,前7个用于测试集,后面用于训练集
X_train =experiences[:7].reshape(-1,1)
X_test = experiences[7:].reshape(-1,1)

# 把目标数据(特征对应的真实值)也分为训练集和测试集
Y_train = salaries[:7]
Y_test = salaries[7:]

# 创建线性回归模型
regr = linear_model.LinearRegression()

# 用训练集训练模型,训练后模型的参数保存在regr模型对象中
regr.fit(X_train, Y_train)

# 用训练得出的模型进行预测
Y_predict = regr.predict(X_test)

# 将测试结果以图的方式显示出来
plt.scatter(X_test, Y_test,  color='black')	#散点图,打印训练集
plt.plot(X_test, Y_predict, color='blue', linewidth=3)	# 连线,打印测试集(测试集就是模型的预测结果)

# 打印模型训练的结果 y=θ0+θ1x  中的θ0,和θ1
print(regr.coef_)	#截距
print(regr.intercept_)	#参数列表

上述代码链接

jupyter链接 link
百度网盘链接 链接:https://pan.baidu.com/s/11St5rPUB3XI5SZkl7a9hrg
提取码:0d1w

预测结果

在这里插入图片描述

<think>好的,我现在需要帮助用户解决如何用pandas的read_csv函数加载空格分隔的txt文件。首先,我得回忆一下pandas的文档和相关参数。用户提到的是空格分隔的txt文件,而read_csv默认使用逗号作为分隔符,所以需要调整参数。 首先,我记得sep参数是用来指定分隔符的。对于空格分隔的情况,可以设置sep=' '。不过,有时候数据中的空格可能不固定,比如多个空格或制表符,这时候可能需要用正则表达式,比如sep='\s+'。但用户的问题可能更简单,只是用单个空格分隔。 另外,用户可能不知道delim_whitespace这个参数,它可以直接处理任何空白字符分隔的情况,包括多个空格或制表符。这样可能更方便,不需要担心分隔符的具体情况。不过需要确认这个参数是否适用于所有情况,比如当数据中包含其他空白字符时是否有效。 然后,用户提供的引用中有提到使用delim_whitespace=True的例子,比如引用[3]中的代码。所以应该推荐这个方法,因为它更简洁,而且会自动处理多个空格的情况。同时,引用[4]也提到sep参数默认是逗号,所以必须显式设置成空格或其它符号。 另外,需要注意是否有其他参数需要调整,比如header是否存在于文件中,是否需要指定列名,或者是否需要处理编码问题。用户可能没有提到这些,但可能需要提醒他们检查这些方面。比如,如果文件没有表头,就需要设置header=None,并通过names参数指定列名,如引用[2]中的例子。 还有,用户可能遇到的问题包括编码错误,所以建议添加encoding参数,比如encoding='utf8',像引用[2]中所示。此外,如果文件中有注释行或需要跳过的行,可以使用skiprows参数,但用户的问题中没有提到,可能不需要。 总结下来,主要的解决方案有两种:使用sep参数或delim_whitespace参数。应该分别说明这两种方法,并给出示例代码,同时指出它们的区别和适用场景。比如,当分隔符是单个空格时可以用sep=' ',但如果有多个空格或制表符,delim_whitespace=True会更方便。 最后,生成相关问题需要考虑用户可能遇到的后续问题,比如如何处理不同的分隔符,调整列名,处理缺失值,或者性能优化等。这样可以帮用户扩展他们的知识,解决更多潜在的问题。</think># 使用pandas读取空格分隔txt文件的方法 ### 方法一:通过`sep`参数指定 当数据使用单个空格分隔时,直接设置`sep=' '`: ```python import pandas as pd df = pd.read_csv('data.txt', sep=' ') ``` ### 方法二:使用`delim_whitespace`参数(推荐) 当存在多个连续空格或混合制表符时,更简洁的解决方案: ```python df = pd.read_csv('data.txt', delim_whitespace=True) ``` ### 方法三:正则表达式分隔符 处理复杂空格场景(如多个空格、制表符混合): ```python df = pd.read_csv('data.txt', sep='\s+', engine='python') ``` ### 参数扩展说明: 1. **列名处理**:当文件无列名时需添加`header=None`和`names`参数 ```python df = pd.read_csv('data.txt', delim_whitespace=True, header=None, names=['col1','col2','col3']) ``` 2. **编码处理**:中文文件可能需要指定`encoding='gbk'` 3. **跳过行数**:`skiprows=2`可跳过前两行注释 4. **索引列设置**:`index_col="name"`可将指定列设为索引[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值