本文主要是介绍降维1-----LASSO(24年5月2日),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这篇哥们儿写的老有意思了:
统计学习:变量选择之Lasso - 知乎 (zhihu.com)
Lasso Regression with Scikit-Learn (Beginner Friendly) (youtube.com)
from sklearn.linear_model import Lasso
from sklearn.datasets import load_iris# 加载数据
data = load_iris()
X = data.data
y = data.target# 使用Lasso进行降维
lasso = Lasso(alpha=0.1)
lasso.fit(X, y)
X_new = lasso.transform(X)print("原始数据形状:", X.shape)
print("降维后数据形状:", X_new.shape)
LASSO表达式
from sklearn.datasets import fetch_california_housing
ca_housing = fetch_california_housing()
#属性矩阵
X=ca_housing.data
#预测目标
y=ca_housing.target#print(ca_housing.feature_names)
#属性变量名称如下:
feature_names=['MedInc', 'HouseAge', 'AveRooms', 'AveBedrms', 'Population', 'AveOccup', 'Latitude', 'Longitude']
#预测变量名称如下
#print(ca_housing.target_names)
target_name=['MedHouseVal']#下面代码以2:8分割训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=19)#预处理?
from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
X_train=scaler.fit_transform(X_train)
X_test=scaler.fit_transform(X_test)
#这段代码的作用是使用StandardScaler对训练集和测试集的特征数据进行标准化处理。
# 标准化的过程包括计算特征的均值和标准差,然后将特征数据减去均值并除以标准差,
# 以确保特征数据具有零均值和单位方差。这有助于提高模型的性能并确保特征数据的尺度一致。#Now we bring in LASSO
from sklearn.linear_model import Lasso
lasso=Lasso()
#下面将训练集喂给LASSO模型1
lasso.fit(X_train,y_train)#下面参数衡量模型性能
from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score#这三个参数是用于评估回归模型性能的指标:#mean_absolute_error:平均绝对误差(Mean Absolute Error,MAE),是预测值与真实值之间差值的绝对值的平均值。MAE越小,表示模型的预测越准确。
#mean_squared_error:均方误差(Mean Squared Error,MSE),是预测值与真实值之间差值的平方的平均值。MSE越小,表示模型的预测越准确。
#r2_score:R平方值(R-squared),用于衡量模型对数据方差的解释程度。取值范围在0到1之间,值越接近1表示模型对数据方差的解释能力越强。#现在将测试集喂给训练好的模型做预测,得到y的预测值
y_pred=lasso.predict(X_test)
print("lasso1,y的预测值=",y_pred)
print("平均绝对误差MAE=",mean_absolute_error(y_test,y_pred))
print("均方误差MSE=",mean_squared_error(y_test,y_pred))
print("R平方值=",r2_score(y_test,y_pred))#调一下参数alpha,模型会更准确
param_grid={'alpha':[0.0001,0.0005,0.001,0.005,0.01,0.1,1,10,100,1000]
}from sklearn.model_selection import GridSearchCV
lasso_cv=GridSearchCV(lasso,param_grid,cv=4,n_jobs=-1)#把训练集喂给调参后的模型lasso_cv
lasso_cv.fit(X_train,y_train)#用模型2 做预测
y_pred2=lasso_cv.predict(X_test)
print("调参后,,lasso2,y的预测值2=",y_pred2)#用3个衡量指标查看调参后的模型性能
print("平均绝对误差MAE2=",mean_absolute_error(y_test,y_pred2))
print("均方误差MSE2=",mean_squared_error(y_test,y_pred2))
print("R平方值2=",r2_score(y_test,y_pred2))print("最佳的alpha=",lasso_cv.best_params_)#alpha=0.001#第三个lasso模型
lasso3=Lasso(alpha=0.001)
lasso3.fit(X_train,y_train)print("lasso3.intercept_=",lasso3.intercept_)
print("lasso3.coef_=",lasso3.coef_)
import pandas as pd
df=pd.DataFrame({'属性名称(xi)':feature_names,'Coef':lasso3.coef_})
print(df)
这篇关于降维1-----LASSO(24年5月2日)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!