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

律师在哪个网站做做灯饰的企业都会在哪些网站

律师在哪个网站做,做灯饰的企业都会在哪些网站,汕头市专注网站建设,开设网站维护公司1、概述 沃尔玛全年都会举办几次促销减价活动。这些减价活动都是在重要节假日之前进行的#xff0c;其中最大的四个节假日是超级碗、劳动节、感恩节和圣诞节。包括这些节假日在内的几周在评估中的权重是非节假日周的五倍。在缺乏完整/理想历史数据的情况下#xff0c;对这些…1、概述 沃尔玛全年都会举办几次促销减价活动。这些减价活动都是在重要节假日之前进行的其中最大的四个节假日是超级碗、劳动节、感恩节和圣诞节。包括这些节假日在内的几周在评估中的权重是非节假日周的五倍。在缺乏完整/理想历史数据的情况下对这些节假日周的降价影响进行建模是此次竞争所面临的部分挑战。我们提供了位于不同地区的 45 家沃尔玛商店的历史销售数据。 数据集信息 这是 2010-02-05 至 2012-11-01 期间的历史销售数据字段情况 Store: 商店 - 商店编号 Date: 日期 - 销售的星期 Weekly_Sales - 指定商店的销售额 Holiday_Flag - 本周是否为特殊假日周 1 - 假日周 0 - 非假日周 Temperature: 温度 - 销售当天的温度 Fuel_Price: 燃料价格 - 该地区的燃料成本 CPI - 现行消费价格指数 Unemployment: 失业率 - 当时的失业率 Holiday Events: 假日活动 Super Bowl: 超级碗 12-Feb-10, 11-Feb-11, 10-Feb-12, 8-Feb-13 Labour Day: 劳动节 10-Sep-10, 9-Sep-11, 7-Sep-12, 6-Sep-13 Thanksgiving: 感恩节 26-Nov-10, 25-Nov-11, 23-Nov-12, 29-Nov-13 Christmas: 圣诞节 31-Dec-10, 30-Dec-11, 28-Dec-12, 27-Dec-13 2、项目流程 了解数据集并进行清理如果需要。 建立回归模型利用单一和多重特征预测销售额。 同时评估模型并比较各自的得分如 R2、RMSE 等。 我们的目标是通过制定行动计划来解决问题陈述以下是一些必要的步骤 数据探索 探索性数据分析EDA 数据预处理 数据处理 特征选择/提取 预测建模 项目成果与结论 3、数据探索  本项目所用python库如下 import os import math import numpy as np import pandas as pd import seaborn as sns from IPython.display import displayfrom statsmodels.formula import api from sklearn.feature_selection import RFE from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from statsmodels.stats.outliers_influence import variance_inflation_factorfrom sklearn.decomposition import PCA from sklearn.linear_model import Ridge from sklearn.linear_model import Lasso from sklearn.linear_model import ElasticNet from sklearn.linear_model import LinearRegression from sklearn.ensemble import RandomForestClassifier from sklearn.preprocessing import PolynomialFeatures from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_errorimport matplotlib.pyplot as plt plt.rcParams[figure.figsize] [10,6]import warnings warnings.filterwarnings(ignore) 3.1、导入数据集 df  pd.read_csv(Walmart.csv) # 完整数据集和代码 display(df.head()) 该数据包含 8 个特征 6435 个样本. 3.2、重构 columns df.Datepd.to_datetime(df.Date)df[weekday]  df.Date.dt.weekday df[month]  df.Date.dt.month df[year]  df.Date.dt.yeardf.drop([Date], axis1, inplaceTrue)#,month target  Weekly_Sales features  [i for i in df.columns if i not in [target]] original_df  df.copy(deepTrue)df.head()检查所有列信息 df.info()class pandas.core.frame.DataFrame RangeIndex: 6435 entries, 0 to 6434 Data columns (total 10 columns):# Column Non-Null Count Dtype --- ------ -------------- ----- 0 Store 6435 non-null int64 1 Weekly_Sales 6435 non-null float642 Holiday_Flag 6435 non-null int64 3 Temperature 6435 non-null float644 Fuel_Price 6435 non-null float645 CPI 6435 non-null float646 Unemployment 6435 non-null float647 weekday 6435 non-null int64 8 month 6435 non-null int64 9 year 6435 non-null int64 dtypes: float64(5), int64(5) memory usage: 502.9 KB检查每个特征的唯一值个数 df.nunique().sort_values()Holiday_Flag 2 year 3 weekday 7 month 12 Store 45 Unemployment 349 Fuel_Price 892 CPI 2145 Temperature 3528 Weekly_Sales 6435 dtype: int64检查每个特征中唯一的行数 nu  df[features].nunique().sort_values() nf  []; cf  []; nnf  0; ncf  0; for i in range(df[features].shape[1]):if nu.values[i]45:cf.append(nu.index[i])else: nf.append(nu.index[i])该数据集包含 4 个数值型 5 个类别型特征。 检查所有列的统计量信息 display(df.describe())统计数据似乎没有问题我们对数据集做进一步分析。 4、探索性数据分析 (EDA)  4.1、目标变量可视化 我们首先分析一下目标变量的分布情况。由于篇幅限制可视化部分直接贴图其余展示主要代码 目标变量似乎呈正态分布平均约为 20 个单位。 4.2、类别型特征可视化 4.3、数值型特征可视化 似乎有一些异常值接下来我们需要解决这些问题... 4.4、特征之间的关系 我们可以发现一些特征具有线性关系接下来需要进一步分析检测多重共线性。 5、据预处理  5.1、删除重复值如果存在 df.drop_duplicates(inplaceTrue)删除重复值数量--- 482 5.2、检查缺失值 nvc  pd.DataFrame(df.isnull().sum().sort_values(), columns[Total Null Values]) nvc[Percentage]  round(nvc[Total Null Values]/df.shape[0],3)*100 print(nvc)Total Null Values Percentage Store 0 0.0 Weekly_Sales 0 0.0 Holiday_Flag 0 0.0 Temperature 0 0.0 Fuel_Price 0 0.0 CPI 0 0.0 Unemployment 0 0.0 weekday 0 0.0 month 0 0.0 year 0 0.0数据集没有任何不一致的值。 5.3、类别型特征转换 for i in fcc:if df[i].nunique()2:d[i]pd.get_dummies(df[i], drop_firstTrue, prefixstr(i))if (df[i].nunique()2):df  pd.concat([df.drop([i], axis1), pd.DataFrame(pd.get_dummies(df3[i], drop_firstTrue, prefixstr(i)))],axis1)经 One-Hot 编码的特征: Holiday_Flag经哑变量编码的特征: year weekday month Store5.4、去除离群值 features1  nf for i in features1:Q1  df1[i].quantile(0.25)Q3  df1[i].quantile(0.75)IQR  Q3 - Q1df1  df1[df1[i]  (Q3(1.5*IQR))]df1  df1[df1[i]  (Q1-(1.5*IQR))]df1  df1.reset_index(dropTrue) display(df1.head())删除离群值前, 数据集有 6435 个样本。 删除离群值后数据集有 5953 个样本。预处理后的最终数据集大小数据清洗后, 482个样本被抛弃, 占总数据量的 7.49% 6、数据处理  6.1、数据划分为训练集和测试集 X  df.drop([target],axis1) Y  df[target] Train_X, Test_X, Train_Y, Test_Y  train_test_split(X, Y, train_size0.8, test_size0.2, random_state100)原始数据集 --- (5953, 68) (5953,) 训练数据集 --- (4762, 68) (4762,) 测试数据集 --- (1191, 68) (1191,)6.2、特征归一化 std  StandardScaler() Train_X_std  std.fit_transform(Train_X) Test_X_std  std.transform(Test_X)7、特征工程  首先通过相关性矩阵查看各个特征间的相关性。  特征之间似乎存在很强的多重相关性。现在需要尝试解决这些问题... 7.1、用统计模型测试线性回归模型 Train_xy  pd.concat([Train_X_std,Train_Y.reset_index(dropTrue)],axis1) a  Train_xy.columns.valuesAPI  api.ols(formula{} ~ {}.format(target,  .join(i for i in Train_X.columns)), dataTrain_xy).fit() API.summary()方法 我们可以通过两种技术来解决多重共线性问题 手动方法--方差膨胀因子VIF 自动方法--递归特征消除法RFE 使用 PCA 分解法消除特征 7.2、手动方法--方差膨胀因子VIF from sklearn.preprocessing import PolynomialFeatures DROP[] for i in range(len(Train_X_std.columns)):vif  pd.DataFrame()X  Train_X_std.drop(DROP,axis1)vif[Features]  X.columnsvif[VIF]  [variance_inflation_factor(X.values, i) for i in range(X.shape[1])]vif[VIF]  round(vif[VIF], 2)vif  vif.sort_values(by  VIF, ascending  False)if vif.loc[0][1]1:DROP.append(vif.loc[0][0])# 建模LR  LinearRegression()LR.fit(Train_X_std.drop(DROP,axis1), Train_Y)pred1  LR.predict(Train_X_std.drop(DROP,axis1))Dropped Features -- [CPI, Unemployment, Fuel_Price, weekday_4, month_7, Store_7, Temperature, month_12, Store_43, year_2012, Store_30, month_2, month_11, Store_16, month_5, Store_25, Store_29, month_10, Store_17, Holiday_Flag, Store_18, year_2011, Store_19, month_9, Store_20, Store_8, Store_34, Store_15, Store_22, month_6, Store_21, Store_35, Store_14, Store_13, Store_45, Store_27, month_3, weekday_1, Store_23, Store_44, Store_42, Store_11, weekday_5, Store_39, weekday_2, weekday_3, Store_24, Store_41, Store_40, Store_10, Store_36, Store_9, month_4, Store_2, Store_3, Store_6]7.3、自动方法--递归特征消除法RFE from sklearn.preprocessing import PolynomialFeatures Trr[]; Tss[]; n3 mdf.shape[1]-2 for i in range(m):lm  LinearRegression()rfe  RFE(lm,n_features_to_selectTrain_X_std.shape[1]-i)rfe  rfe.fit(Train_X_std, Train_Y)# 建模LR  LinearRegression()LR.fit(Train_X_std.loc[:,rfe.support_], Train_Y)pred1  LR.predict(Train_X_std.loc[:,rfe.support_])7.4、使用 PCA 分解法消除特征 from sklea.decomposition import PCApca  PCA().fit(Train_X_std) pca.explained_variance_ratio_ # 解释方差 np.cumsum(pca.explained_variance_ratio_ # 累计解释方差 pca.n_components_ #主成分from sklearn.decomposition import PCA from sklearn.preprocessing import PolynomialFeatures Trr[]; Tss[]; n3 order[ord-str(i) for i in range(2,n)] Trd  pd.DataFrame(np.zeros((10,n-2)), columnsorder) Tsd  pd.DataFrame(np.zeros((10,n-2)), columnsorder) mdf.shape[1]-1for i in range(m):pca  PCA(n_componentsTrain_X_std.shape[1]-i)Train_X_std_pca  pca.fit_transform(Train_X_std)Test_X_std_pca  pca.fit_transform(Test_X_std)# 建模LR  LinearRegression()LR.fit(Train_X_std_pca, Train_Y)pred1  LR.predict(Train_X_std_pca)可以看出在未使用 VIF、RFE 和 PCA 技术放弃特征的情况下模型的性能相当。比较 RMSE 图发现使用手动 RFE 技术丢弃大多数特征的最佳值。但由于高级多重线性算法可以解决多重共线性问题因此我们暂且跳过这些问题。 7.5、筛选出所选特征RFE lm  LinearRegression() rfe  RFE(lm,n_features_to_selectTrain_X_std.shape[1]-28)  rfe  rfe.fit(Train_X_std, Train_Y)LR  LinearRegression() LR.fit(Train_X_std.loc[:,rfe.support_], Train_Y) pred1  LR.predict(Train_X_std.loc[:,rfe.support_]) pred2  LR.predict(Test_X_std.loc[:,rfe.support_])print(训练集MSE:, np.sqrt(mean_squared_error(Train_Y, pred1))) print(测试集MSE:,np.sqrt(mean_squared_error(Test_Y, pred2)))Train_X_std  Train_X_std.loc[:,rfe.support_] Test_X_std  Test_X_std.loc[:,rfe.support_]训练集MSE: 152984.3455868294 测试集MSE: 157283.790515149658、预测建模 首先定义一个函数来评估模型。 Model_Evaluation_Comparison_Matrix  pd.DataFrame(np.zeros([5,8]), columns[Train-R2,Test-R2,Train-RSS,Test-RSS,Train-MSE,Test-MSE,Train-RMSE,Test-RMSE]) rcnp.random.choice(Train_X_std.loc[:,Train_X_std.nunique()50].columns.values,2,replaceFalse) def Evaluate(n, pred1,pred2):在实际数据点旁边绘制预测的预测值 现在尝试建立多元回归模型并比较其评估指标以选择训练集和测试集的最佳拟合模型... 8.1、多元线性回归 MLR  LinearRegression().fit(Train_X_std,Train_Y) pred1  MLR.predict(Train_X_std) print(回归模型的截距为 ,MLR.intercept_) Evaluate(0, pred1, pred2)------------------------------[1m 评估多元线性回归模型 [0m------------------------------回归模型的截距为 1047603.298112138--------------------训练集指标--------------------训练集的 R2 分数 --- 0.9276826744775732 训练集的残差平方和 (RSS) --- 111450847994430.22 训练集的均方误差 (MSE) --- 23404209994.630455 训练集的均方根误差 (RMSE) --- 152984.3455868294--------------------测试集指标--------------------测试集的 R2 分数 --- 0.927676279121959 测试集的残差平方和 (RSS) --- 29463185193746.86 测试集的均方误差 (MSE) --- 24738190758.813484 测试集的均方根误差 (RMSE) --- 157283.79051514965--------------------残差图--------------------8.2、岭回归模型 RLR  Ridge().fit(Train_X_std,Train_Y) pred1  RLR.predict(Train_X_std) print(回归模型的截距为 ,MLR.intercept_) Evaluate(1, pred1, pred2)-----------------------------------[1m 评估岭回归模型 [0m-----------------------------------回归模型的截距为 1047603.298112138--------------------训练集指标--------------------训练集的 R2 分数 --- 0.9276821973327432 训练集的残差平方和 (RSS) --- 111451583339598.72 训练集的均方误差 (MSE) --- 23404364414.02745 训练集的均方根误差 (RMSE) --- 152984.85027618732--------------------测试集指标--------------------测试集的 R2 分数 --- 0.927696636618113 测试集的残差平方和 (RSS) --- 29454891971661.734 测试集的均方误差 (MSE) --- 24731227516.08878 测试集的均方根误差 (RMSE) --- 157261.65303750554--------------------残差图-------------------- 8.3、Lasso 回归模型 LLR  Lasso().fit(Train_X_std,Train_Y) pred1  LLR.predict(Train_X_std) print(回归模型截距为 ,MLR.intercept_) Evaluate(2, pred1, pred2)-----------------------------------[1m 评估回归模型 [0m-----------------------------------回归模型截距为 1047603.298112138--------------------训练集指标--------------------训练集的 R2 分数 --- 0.9276826740433101 训练集的残差平方和 (RSS) --- 111450848663688.89 训练集的均方误差 (MSE) --- 23404210135.171963 训练集的均方根误差 (RMSE) --- 152984.3460461624--------------------测试集指标--------------------测试集的 R2 分数 --- 0.9276767498337136 测试集的残差平方和 (RSS) --- 29462993435532.15 测试集的均方误差 (MSE) --- 24738029752.75579 测试集的均方根误差 (RMSE) --- 157283.27868135186--------------------残差图--------------------8.4、弹性网络回归 ENR  ElasticNet().fit(Train_X_std,Train_Y) pred1  ENR.predict(Train_X_std) print(回归模型截距为 ,MLR.intercept_) Evaluate(3, pred1, pred2)-----------------------------------[1m 弹性网络回归模型 [0m-----------------------------------回归模型截距为 1047603.298112138--------------------训练集指标--------------------训练集的 R2 分数 --- 0.7477826893125253 训练集的残差平方和 (RSS) --- 388701226876489.0 训练集的均方误差 (MSE) --- 81625625131.56006 训练集的均方根误差 (RMSE) --- 285701.9865726524--------------------测试集指标--------------------测试集的 R2 分数 --- 0.7599512663907991 测试集的残差平方和 (RSS) --- 97790879783118.03 测试集的均方误差 (MSE) --- 82108211404.80104 测试集的均方根误差 (RMSE) --- 286545.3042797963--------------------残差图--------------------8.5、多项式回归模式 检查不同度数的多项式回归性能 for i in range(2,n_degree):poly_reg  PolynomialFeatures(degreei)X_poly  poly_reg.fit_transform(Train_X_std)X_poly1  poly_reg.fit_transform(Test_X_std)LR  LinearRegression()LR.fit(X_poly, Train_Y)pred1  LR.predict(X_poly)pred2  LR.predict(X_poly1)我们可以选择二阶多项式回归因为它能给出最佳的训练和测试分数。 # 使用二阶多项式回归模型degree2poly_reg  PolynomialFeatures(degree2) X_poly  poly_reg.fit_transform(Train_X_std) PR  LinearRegression() PR.fit(X_poly, Train_Y) pred1  PR.predict(X_poly) print(回归模型截距为 ,MLR.intercept_)Evaluate(4, pred1, pred2)-----------------------------------[1m 评估多项式回归模型 [0m-----------------------------------回归模型截距为 1047603.298112138--------------------训练集指标--------------------训练集的 R2 分数 --- 0.9431089741641003 训练集的残差平方和 (RSS) --- 87676819169947.55 训练集的均方误差 (MSE) --- 18411763790.413177 训练集的均方根误差 (RMSE) --- 135689.95464076617--------------------测试集指标--------------------测试集的 R2 分数 --- -1.0263501127334386e19 测试集的残差平方和 (RSS) --- 4.1811376790307856e33 测试集的均方误差 (MSE) --- 3.5106109815539756e30 测试集的均方根误差 (RMSE) --- 1873662451338014.0--------------------残差图--------------------8.6、比较各种模型的评估指标 不同回归模型的 R2 分数对比 EMC  Model_Evaluation_Comparison_Matrix.copy() EMC.index  [多元线性回归 (MLR),岭线性回归 (RLR),Lasso线性回归 (LLR),弹性网络回归 (ENR),多项式回归 (PNR)] EMC 从上图可以看出多项式回归模型在理解数据集方面具有最高的解释力。 8.7、不同回归模型的均方根误差比较 RMSE 越小模型越好而且前提是模型必须与训练和测试得分非常接近。对于这个问题可以说多项式回归明显过度拟合了当前问题。令人惊讶的是简单的多元线性回归模型给出了最好的结果。 9、 项目成果和结论 以下是该项目的一些主要内容 数据集非常小只有 6435 个样本经过预处理后7.5% 的数据样本被删除。 可视化数据分布及其关系有助于我们深入了解特征集。 这些特征具有较高的多重共线性因此在特征提取步骤中我们使用 VIF 技术筛选出了合适的特征。 使用默认超参数器测试多种算法让我们了解了各种模型在这一特定数据集上的性能。 可以肯定的是多元回归算法比其他算法表现得更好因为它们的得分不相上下而且更具通用性。
http://www.w-s-a.com/news/35/

相关文章: