当前位置: 首页 > news >正文

网站要不要备案网站开发工具安全性能

网站要不要备案,网站开发工具安全性能,萧山网站建设公司,互联网项目网站House Prices - Advanced Regression Techniques 一、准备工作#xff08;1#xff09;查看项目概述#xff08;2#xff09;下载数据集#xff08;3#xff09;导入部分必要的库#xff08;4#xff09;参数设置#xff08;图形显示大小屏蔽警告#xff09;#xf… House Prices - Advanced Regression Techniques 一、准备工作1查看项目概述2下载数据集3导入部分必要的库4参数设置图形显示大小屏蔽警告5导入数据集 二、特征分析1分析数据特征2分析时间序列特征 三、数据预处理一合并数据二对于数字特征1减小时间特征值的大小2 正态化 SalePrice3连续值归一化有些数太大了严重影响拟合情况4无效值用该列平均值填充 三对于类别特征 四、建立模型一数据准备二定义均方根误差函数评分指标三建立 Ridge 回归模型1模型最佳的 alpha 值的选取2训练模型预测结果3输出结果 四建立 Lasso 回归模型五建立XGBoost 回归模型六基于前三种回归模型建立 集成学习 模型1Ridge 为主 Lasso 为辅2Lasso 为主 Ridge 为辅3Lasso 为主 Ridge、XGboost 为辅4XGboost 为主 Ridge、Lasso 为辅4单 XGboost 手动调参5尝试混合模型自行设置比列 一、准备工作 1查看项目概述 网址https://www.kaggle.com/competitions/house-prices-advanced-regression-techniques/overview 简单来说就是我们需要根据一些房子的信息数据所有房子的79个特征表现部分房子的真实房价来预测其他的房子的价格。 2下载数据集 一直往下翻 3导入部分必要的库 import pandas as pd import numpy as np import matplotlibimport matplotlib.pyplot as plt from scipy.stats import skew4参数设置图形显示大小屏蔽警告 %matplotlib inline 是一个 Jupyter Notebook 中的魔术命令magic command用于设置 Matplotlib 图形直接在 Notebook 单元格中显示而不是在一个单独的窗口中显示matplotlib.rcParams[‘figure.figsize’] (12.0, 6.0) 设置 Matplotlib 绘图时的默认图形尺寸。具体来说rcParams 是 Matplotlib 的运行时配置参数figure.figsize 是其中一个参数用于指定图形的宽度和高度。 %matplotlib inline matplotlib.rcParams[figure.figsize] (12.0, 6.0)import warnings warnings.filterwarnings(ignore)5导入数据集 train pd.read_csv(train.csv) test pd.read_csv(test.csv)二、特征分析 1分析数据特征 2分析时间序列特征 year_feats [col for col in all_data.columns if Yr in col or Year in col] year_feats然后检查一下这些特征与销售价格是否有关系 根据 YrSold 列对 all_data 中此列数据框进行分组并计算每个分组中 SalePrice 列的中位数然后绘制这些中位数随时间变化的折线图 combined_df pd.concat([train,test],axis0)combined_df.groupby(YrSold)[SalePrice].median().plot() plt.xlabel(Year Sold) plt.ylabel(House Price) plt.title(House price vs YearSold)绘制其他三个特征与销售价格的散点对应图 for feature in year_feats:if feature ! YrSold:hs combined_df.copy()plt.scatter(hs[feature],hs[SalePrice])plt.xlabel(feature)plt.ylabel(SalePrice)plt.show()可以看到随着时间的增加价格是逐增加的 三、数据预处理 一合并数据 all_data pd.concat([train.loc[:, MSSubClass:SaleCondition],test.loc[:, MSSubClass:SaleCondition]])二对于数字特征 1减小时间特征值的大小 用售卖时间减去 build/remodadd/garageBuild 的时间 在某些情况下直接使用年份数据可能不如使用年龄数据有效年龄数据可以减少年份数据中的噪声并可能提高模型的性能 for feature in [YearBuilt,YearRemodAdd,GarageYrBlt]:all_data[feature]all_data[YrSold]-all_data[feature]2 正态化 SalePrice skew() 是一个统计函数用于计算数据集的偏度skewness。偏度是描述数据分布形态的一个统计量它衡量数据分布的不对称程度。对偏斜程度大于0.75的做log1p处理减少数据的偏度使其更接近正态分布 prices pd.DataFrame({price:train[SalePrice],log(price 1):np.log1p(train[SalePrice])}) train[SalePrice] np.log1p(train[SalePrice])numeric_feats all_data.dtypes[all_data.dtypes ! object].indexskewed_feats train[numeric_feats].apply(lambda x: skew(x.dropna())) skewed_feats skewed_feats[skewed_feats 0.75] skewed_feats skewed_feats.index all_data[skewed_feats] np.log1p(all_data[skewed_feats])3连续值归一化有些数太大了严重影响拟合情况 all_data[numeric_feats] all_data[numeric_feats].apply(lambda x: (x - x.mean())/(x.std()))4无效值用该列平均值填充 all_data all_data.fillna(all_data.mean())三对于类别特征 扩充成特征列用0、1表示以达到值全部都是数的效果这样计算机才能读懂 将 all_data 数据框中的分类变量进行独热编码并将结果重新赋值给 all_data。经过 get_dummies 处理后all_features 数据框中的每个分类变量都会被转换为多个二进制列每个列对应一个分类变量的一个唯一值。 如果 dummy_naTrue还会为每个包含 NaN 的分类变量创建一个额外的列来表示 NaN 值。 all_data pd.get_dummies(all_data)四、建立模型 一数据准备 1分别拿到训练和测试特征训练标签 因之前合并了数据进行特征处理这里把数据集拆分还原为训练集和测试集还要将训练标签拆分出来 .shape( ) 返回一个包含数据框形状的元组 (rows, columns)这里.shape[0]通过索引 [0] 访问元组的第一个元素即数据框的行数作用就是计算并存储 train 数据框的行数即训练数据集的样本数量train.SalePrice 从名为 train 的 DataFrame 中提取 SalePrice 这一列并将其赋值给变量 y X_train all_data[:train.shape[0]] X_test all_data[train.shape[0]:] y train.SalePrice2导入训练模型所需的库 Ridge 和 RidgeCV Ridge 是 Ridge 回归模型一种线性回归的正则化版本通过添加 L2 正则化项即平方和惩罚项来防止过拟合。 RidgeCV 是 Ridge 回归的交叉验证版本用于自动选择最佳的正则化参数alpha。ElasticNet ElasticNet 是一种结合了 L1 和 L2 正则化的线性回归模型。它同时使用 L1 正则化Lasso和 L2 正则化Ridge来平衡特征选择和模型复杂度。LassoCV 和 LassoLarsCV LassoCV 是 Lasso 回归的交叉验证版本Lasso 回归通过添加 L1 正则化项即绝对值和惩罚项来进行特征选择和防止过拟合。 LassoLarsCV 是使用最小角回归Least Angle Regression, LARS算法的 Lasso 回归的交叉验证版本适用于高维数据集。 from sklearn.linear_model import Ridge, RidgeCV, ElasticNet, LassoCV, LassoLarsCV from sklearn.model_selection import cross_val_score二定义均方根误差函数评分指标 通过交叉验证cross-validation来评估模型的性能 cross_val_score 是一个函数用于执行交叉验证并返回每个折叠的评分scoring‘neg_mean_squared_error’ 指定评分指标为负的均方误差Negative Mean Squared Error。由于 cross_val_score 返回的是负的均方误差我们需要取负号来得到正的均方误差。cv5 指定使用 5 折交叉验证。 def rmse_cv(model):rmse np.sqrt(-cross_val_score(model, X_train, y, scoringneg_mean_squared_error, cv5))return rmse三建立 Ridge 回归模型 1模型最佳的 alpha 值的选取 通过交叉验证评估不同 alpha 值对 Ridge 回归模型性能的影响并绘制结果图表以便选择最佳的 alpha 值 model_ridge Ridge() 创建了一个 Ridge 回归模型的实例但并没有指定 alpha 值。alpha 值是 Ridge 回归中的正则化参数用于控制模型的复杂度。还定义了一个包含不同 alpha 值的列表。这些 alpha 值将用于评估 Ridge 回归模型的性能。接着定义了一个列表推导式对于 alphas 列表中的每个 alpha 值创建一个 Ridge 模型实例并指定该 alpha 值。调用 rmse_cv 函数计算该模型的 RMSErmse_cv 函数通过交叉验证返回每个折叠的 RMSE 值。对每个 alpha 值的 RMSE 值取平均得到该 alpha 值对应的平均 RMSE。 model_ridge Ridge()alphas [0.05, 0.1, 0.3, 1, 3, 5, 10, 15, 30, 50, 75] cv_ridge [rmse_cv(Ridge(alpha alpha)).mean() for alpha in alphas] cv_ridge pd.Series(cv_ridge, index alphas) cv_ridge.plot(title Validation) plt.xlabel(Alpha) plt.ylabel(RMSE)可以看到 alpha10 时效果最好我们就取 alpha10 2训练模型预测结果 fit 方法会根据输入数据调整模型的参数使其能够对数据进行预测。训练后的模型存储在 ridge_model_after_fit 变量中。predict 方法返回预测结果。由于在训练过程中对目标变量 y 进行了对数变换np.log1p这里使用 np.expm1 对预测结果进行逆变换将其转换回原始的房价范围。np.expm1 是 np.exp(x) - 1 的简写用于计算 exp(x) - 1。 chosen_alpha 10 model_ridge Ridge(alpha chosen_alpha)ridge_model_after_fit model_ridge.fit(X_train, y)ridge_preds np.expm1(model_ridge.predict(X_test))3输出结果 solution pd.DataFrame({id:test.Id, SalePrice:ridge_preds}) solution.to_csv(ridge_sol_alpha10.csv, indexFalse)四建立 Lasso 回归模型 步骤与前面类似这里不再阐述 model_lasso LassoCV(alphas [20, 10, 1, 0.1, 0.01, 0.001, 0.0005]).fit(X_train, y)lasso_preds np.expm1(model_lasso.predict(X_test))solution pd.DataFrame({id:test.Id, SalePrice:lasso_preds}) solution.to_csv(lasso_sol.csv, indexFalse)五建立XGBoost 回归模型 DMatrix 是 XGBoost 中用于存储数据的一种数据结构它优化了内存使用和计算效率。objective 指定了模型的目标函数为回归问题中的平方误差。colsample_bylevel 指定类每层的列采样比例用交叉验证来训练 XGBoost 模型。xgb.cv 函数会在指定的 num_boost_round 轮迭代中训练模型并在 early_stopping_rounds 轮内没有提升时提前停止训练xgb.XGBRegressor 是 XGBoost 库中的一个类用于创建一个梯度提升回归模型。n_estimators360 指定了模型的迭代次数即构建的树的数量。在这个例子中模型将构建 360 棵树。max_depth2 指定了每棵树的最大深度。树的深度控制了模型的复杂度较小的深度可以防止过拟合。在这个例子中每棵树的最大深度为 2。learning_rate0.1 指定了学习率也称为收缩因子shrinkage factor。学习率控制了每棵树对最终预测结果的贡献程度。较小的学习率可以防止过拟合但可能需要更多的树来达到较好的性能。在这个例子中学习率为 0.1。model_xgb xgb.XGBRegressor(n_estimators360, max_depth2, learning_rate0.1) 和 model_xgb.fit(X_train, y) 用于创建和训练模型而 model xgb.cv(params, dtrain, num_boost_round500, early_stopping_rounds100) 用于通过交叉验证评估模型性能并选择最佳的迭代次数。这三行代码共同构成了一个完整的模型训练和评估流程。 import xgboost as xgbdtrain xgb.DMatrix(X_train, labely) dtest xgb.DMatrix(X_test)params {objective:reg:squarederror,max_depth: 4,colsample_bylevel: 0.5,learning_rate: 0.1,random_state: 20} model xgb.cv(params, dtrain, num_boost_round500, early_stopping_rounds100)model_xgb xgb.XGBRegressor(n_estimators360, max_depth2, learning_rate0.1) model_xgb.fit(X_train, y)xgb_preds np.expm1(model_xgb.predict(X_test))solution pd.DataFrame({id:test.Id, SalePrice:xgb_preds}) solution.to_csv(xgb_sol.csv, indexFalse)六基于前三种回归模型建立 集成学习 模型 1Ridge 为主 Lasso 为辅 创建了一个堆叠回归模型 model_stacked它使用 model_ridge 和 model_lasso 作为基础回归模型并使用 model_ridge 作为元回归模型。use_features_in_secondaryTrue 元回归模型将训练阶段得到的特征信息应用到预测阶段。这种堆叠方法可以提高模型的性能因为它结合了多个模型的优势。 from mlxtend.regressor import StackingCVRegressor model_stacked StackingCVRegressor(regressors(model_ridge, model_lasso),meta_regressormodel_ridge,use_features_in_secondaryTrue) rmse rmse_cv(model_stacked) print(model_stacked: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_ridge) print(model_ridge: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_lasso) print(model_lasso: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_xgb) print(model_xgb: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std()))分数不是很理想以 Lasso 为主试一下 2Lasso 为主 Ridge 为辅 model_stacked StackingCVRegressor(regressors(model_ridge, model_lasso),meta_regressormodel_lasso,use_features_in_secondaryTrue) rmse rmse_cv(model_stacked) print(model_stacked: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_ridge) print(model_ridge: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_lasso) print(model_lasso: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_xgb) print(model_xgb: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std()))好了点再加上 XGboost 试一下 3Lasso 为主 Ridge、XGboost 为辅 model_stacked StackingCVRegressor(regressors(model_ridge, model_lasso, model_xgb),meta_regressormodel_lasso,use_features_in_secondaryTrue) rmse rmse_cv(model_stacked) print(model_stacked: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_ridge) print(model_ridge: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_lasso) print(model_lasso: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_xgb) print(model_xgb: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std()))得分看起来挺好的其他组合都可以试一下但从单个模型的效果上来看只有下面这种组合有预测提升的可能 4XGboost 为主 Ridge、Lasso 为辅 model_stacked StackingCVRegressor(regressors(model_ridge, model_lasso, model_xgb),meta_regressormodel_xgb,use_features_in_secondaryTrue) rmse rmse_cv(model_stacked) print(model_stacked: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_ridge) print(model_ridge: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_lasso) print(model_lasso: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std())) rmse rmse_cv(model_xgb) print(model_xgb: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std()))4单 XGboost 手动调参 xgb_params dict(max_depth3,learning_rate0.05,n_estimators1000,min_child_weight1,colsample_bytree0.3,subsample0.4,reg_alpha0.5,reg_lambda0.1,num_parallel_tree1 ) model_xgb xgb.XGBRegressor(**xgb_params)rmse rmse_cv(model_xgb) print(model_xgb: {:.4f} ({:.4f}).format(rmse.mean(), rmse.std()))得分不错 5尝试混合模型自行设置比列 from skimage.metrics import mean_squared_errormodel_stacked.fit(X_train, y)ridge_preds_train model_ridge.predict(X_train) lasso_preds_train model_lasso.predict(X_train) xgb_preds_train model_xgb.predict(X_train) stacked_preds_train model_stacked.predict(X_train)train_blended_predictions (0.80 * xgb_preds_train) \(0.2 * stacked_preds_train) print(np.sqrt(mean_squared_error(y, train_blended_predictions)))ridge_preds_test model_ridge.predict(X_test) lasso_preds_test model_lasso.predict(X_test) xgb_preds_test model_xgb.predict(X_test) stacked_preds_test model_stacked.predict(X_test)blended_predictions (0.20 * ridge_preds_test) \(0.70 * xgb_preds_test) \(0.10 * stacked_preds_test) blended_predictions np.floor(np.expm1(blended_predictions))solution pd.DataFrame({id:test.Id, SalePrice:blended_predictions}) solution.to_csv(blended_predictions.csv, indexFalse)
http://www.w-s-a.com/news/651783/

相关文章:

  • 做影视网站引流网页美工设计课程教案
  • 响应式网站开发流程图网站优化seo教程
  • 做汽车团购网站百度官网平台
  • 网站增加关键字建设旅游网站的功能定位
  • 怎么搭建源码网站义乌网络
  • 定远规划建设局网站wordpress云主机安装
  • 慈溪市网站开发软件开发文档国家标准
  • 本地佛山顺德网站设计公司的网站如何建设
  • 网站建设前十名网站建设 招标书
  • 手机网站标准百度搜索关键词排名优化推广
  • 中国空间站科幻作文1000字wordpress运行库
  • 徐州做网站的wordpress可视化编辑器排行
  • 官方网站英语上海公司注册核名查询
  • 东莞网站建设推广云南昆明最新消息
  • 上网站乱码网页设计与网站建设案例教程
  • 宣讲网站建设wordpress多媒体主题
  • 如何成立网站互联网开发是做什么的
  • 网站首页的尺寸做多大网页图片排版
  • 龙岩天宫山索道多少钱河南网站排名优化哪家好
  • 北京做网站设计程序员和网站开发
  • 个人 做自媒体 建网站图片制作成视频的手机软件
  • h5 建站网站 移动端重庆潼南网站建设价格
  • 商企在线营销型网站怎么做时光网站
  • 网站建设方案论文1500竞价托管哪家便宜
  • 使用cdn的网站宣武网站建设
  • 营销型网站怎么建设企业网站Wap在线生成
  • 网站建设服务费应该做到什么科目广州网页制作服务商
  • 网站显示500错误怎么解决方法店面设计模板
  • 网站备案icp文化传媒有限公司
  • 北京企业建站模板微信公众号商城怎么制作