```python
# 导入第三方模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.linear_model import Ridge
import warnings
warnings.filterwarnings("ignore") # 忽略警告信息输出
# 读取数据
bingdata = pd.read_excel(r'C:\Users\86150\Desktop\1111.xlsx')
# print(bingdata)
bingdata=np.array(bingdata).reshape(len(bingdata),1)
# print(bingdata)
# 选择自变量、因变量
X,y = bingdata.ix[:,2:-1],bingdata.ix[:,-1]
# 将数据集拆分为训练集、测试集
X_train,X_test,y_train,y_test = model_selection.train_test_split(X,y,test_size=0.2,random_state=123)
# 构造不同的 lambda值
lambds = np.logspace(-5,2,200)
# 构造空列表,用于存储模型的偏回归系数
ridge_coffs = []
# 求解不同lambda对应的系数值
for lambd in lambds:
ridge = Ridge(alpha=lambd,normalize=True)
ridge.fit(X_train,y_train)
ridge_coffs.append(ridge.coef_)
# 绘制lambda 的对数与回归系数的关系
# 设置绘图风格
plt.style.use('seaborn')
# 为了画图中文可以正常显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #指定默认字体
plt.rcParams['axes.unicode_minus'] = False #解决保存图像时负号'-'显示为方块的问题
plt.plot(lambds,ridge_coffs)
# 对x轴做对数处理
plt.xscale('log')
# 设置x轴和y轴标签
plt.xlabel('Log($\lambda$)')
plt.ylabel('Cofficients')
plt.title('正则项系数与回归系数之间的关系')
# 显示图形
plt.show()
# 加载模块
import plotly_express as px
# 正则项系数与回归系数之间的关系
p_lam = [lambds] * 8
p_lam = pd.Series(pd.DataFrame(p_lam).values.ravel())
c_s = pd.DataFrame(ridge_coffs,columns=['c'+str(i) for i in range(1,9)])
c_res = pd.Series()
for i in range(8):
temp = pd.Series(c_s['c'+str(i+1)])
temp.index=len(lambds)*['c'+str(i+1)]
c_res = pd.concat([c_res,temp])
c_res = pd.DataFrame(c_res)
c_res = c_res.reset_index()
xy_df= pd.concat([p_lam,c_res],axis=1)
xy_df.columns =['lambda','coef','coef_values']
px.line(xy_df,x="lambda",y='coef_values',log_x=True,color='coef',height=400,width=600)
上面的是源码
遇到的问题是数据读取

你的文件是什么格式?有错误截图吗
Python数据读取与线性回归分析
可以借鉴下
data.head(n=1)
data.iloc[:,1] # 提取第一列数据
data[0:2] # 提取两行数据
print (data.iloc[[0,2],[1,2]]) #自由选取行位置和列位置对应的数据切片
X= data[['x1','x2','x3']] #选取列名为x1,x2,x3的列作为X
Y= data[['y']] #选取列名为y的作为Y.
##对上述的X和Y进行划分为3和7
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3, random_state=42)
matplotlib(数学绘图库)、Pygal包
对于岭回归分析所需的数据,可以使用pandas库中的read_csv()或者read_excel()函数来读取数据文件,例如可以使用以下代码将csv格式的数据文件读取为pandas DataFrame对象:
import pandas as pd data = pd.read_csv('file.csv')
如果数据文件是excel格式,则可以使用以下代码读取数据:
import pandas as pd data = pd.read_excel('file.xlsx')
读取数据后,可以使用pandas库和numpy库对数据进行预处理和处理,最终输出Ridge Regression所需的输入数据。以下是一个进行简单线性回归分析拟合和绘图的示例代码:
import numpy as np import statsmodels.api as sm import pandas as pd import matplotlib.pyplot as plt
data=pd.read_excel('data.xlsx',encoding='ute-8') y=data['target'] x=data.drop('target',axis=1)
x_n = sm.add_constant(x) #statsmodels进行回归时,一定要添加此常数项 model = sm.OLS(y, x_n) #model是回归分析模型 results = model.fit() #results是回归分析后的结果
print(results.summary()) print('Parameters: ', results.params) print('R2: ', results.rsquared)
plt.figure() plt.rcParams['font.sans-serif'] = ['Kaiti'] # 指定默认字体 plt.title(u"线性回归预测") plt.xlabel(u"x") plt.ylabel(u"y") plt.axis([0, 3000000, 0, 5000000000]) plt.scatter(x, y, marker="o",color="b", s=50) plt.plot(x_n, y, linewidth=3, color="r") plt.show()
其中,data变量为读取到的数据DataFrame对象,y和x分别为对应数据集的标签和特征,可以根据具体需要进行设置。实际进行岭回归分析时还需要进行一些其他操作,例如对特征进行缩放或者正则化等操作,具体操作可以参考相关文献或者在线教程。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
根据问题描述,可能出现读取数据文件路径错误的问题。需要先检查一下文件路径是否正确,建议使用绝对路径。如果使用相对路径,需要确认所在的工作目录是否正确。以下是一种可行的代码,可以尝试运行一下:
# 导入第三方模块
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn import model_selection
from sklearn.linear_model import Ridge
import warnings
warnings.filterwarnings("ignore") # 忽略警告信息输出
# 读取数据
bingdata = pd.read_excel('C:/Users/86150/Desktop/1111.xlsx') # 绝对路径
bingdata = np.array(bingdata).reshape(len(bingdata),1)
# 选择自变量、因变量
X, y = bingdata.ix[:, 2:-1], bingdata.ix[:, -1]
# 将数据集拆分为训练集、测试集
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.2, random_state=123)
# 构造不同的 lambda值
lambds = np.logspace(-5, 2, 200)
# 构造空列表,用于存储模型的偏回归系数
ridge_coffs = []
# 求解不同lambda对应的系数值
for lambd in lambds:
ridge = Ridge(alpha=lambd, normalize=True)
ridge.fit(X_train, y_train)
ridge_coffs.append(ridge.coef_)
# 绘制lambda 的对数与回归系数的关系
# 设置绘图风格
plt.style.use('seaborn')
# 为了画图中文可以正常显示
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei'] #指定默认字体
plt.rcParams['axes.unicode_minus'] = False #解决保存图像时负号'-'显示为方块的问题
plt.plot(lambds, ridge_coffs)
# 对x轴做对数处理
plt.xscale('log')
# 设置x轴和y轴标签
plt.xlabel('Log($\lambda$)')
plt.ylabel('Cofficients')
plt.title('正则项系数与回归系数之间的关系')
# 显示图形
plt.show()
# 加载模块
import plotly_express as px
# 正则项系数与回归系数之间的关系
p_lam = [lambds] * 8
p_lam = pd.Series(pd.DataFrame(p_lam).values.ravel())
c_s = pd.DataFrame(ridge_coffs, columns=['c'+str(i) for i in range(1, 9)])
c_res = pd.Series()
for i in range(8):
temp = pd.Series(c_s['c'+str(i+1)])
temp.index = len(lambds) * ['c'+str(i+1)]
c_res = pd.concat([c_res, temp])
c_res = pd.DataFrame(c_res)
c_res = c_res.reset_index()
xy_df= pd.concat([p_lam, c_res], axis=1)
xy_df.columns = ['lambda', 'coef', 'coef_values']
px.line(xy_df, x="lambda", y='coef_values', log_x=True, color='coef', height=400, width=600)
如果我的回答解决了您的问题,请采纳!
以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:
根据您提供的代码和数据,在读取Excel数据时出现了问题。有以下几点建议:
除此之外,其他需要检查的点有:
所以,我的建议是: