• 在路上
    2021-09-15
    佳哥好,我的理解是,特征构建是将数据和经验相结合,提炼数据的特征,提高模型预测的准确度;特征变换是将数据变成可运算的,或者转化成关心的尺度,减少计算资源的消耗;特征选择既可以去掉重复的特征,提高模型预测的准确度,也可以去掉相关度较小的特征,减少计算资源的消耗,但代价是牺牲模型预测的准确度。 get_dummies将城市这一个维度变成了N个维度,是不是可以把N个维度合并,用位来表示不同的城市?

    作者回复: 如果把N个维度合并,变成一个维度-“城市”1-北京,2-上海,3-苏州,4...,5...,6.... 我想那样是不对的,为什么呢,因为回归模型会认为苏州比上海大,上海比北京大。影响权重的分配。需要全部转换为N个 0 、 1 虚拟变量编码才是正确的做法。

    
    12
  • 谦
    2021-09-15
    ‘’数据和特征决定了机器学习的上限,而模型和算法只是无限逼近这个上限而已‘’,对这句话深有体会,特征工程,特别是特征构建是核心竞争力,花时间最多的也是数据采集和特征提取。每一次训练的模型预测结果不理想,都要反过去考虑是不是数据样本太片面了,是不是还有更好的特征可以使用,还能不能构建出更好的特征?

    作者回复: 是这样的,调包容易,数据的收集和预处理难。需要领域知识和经验,也就是domain knowledge.

    共 2 条评论
    5
  • Mark@ZEGO
    2022-03-10
    思考题2: from sklearn.preprocessing import OneHotEncoder #导入OneHotEncoder工具 encoder = OneHotEncoder(sparse=False) df_city = encoder.fit_transform(df_sales.城市.values.reshape(-1, 1)) df_city = pd.DataFrame(df_city, columns=encoder.get_feature_names()) df_sales = pd.concat([df_sales, df_city], axis=1) df_sales = df_sales.drop(['城市'], axis=1)

    作者回复: OK

    
    2
  • trust
    2021-12-28
    老师,之前用多项式拟合的时候,拟合效果挺好,但是用预测方面上比较差。比如用x属于1到100的数据来拟合,来预测x是120的结果,就不准了,是不是过拟合还是其他方面的问题哒~

    作者回复: 拟合效果好,但是预测不准,就是存在过拟合的问题了。模型太过于依赖训练集数据了。

    
    1
  • Matthew
    2023-05-31 来自江苏
    # 评估模型 from sklearn.metrics import r2_score, median_absolute_error #导入Sklearn评估模块 print('验证集上的R平方分数-随机森林(无缩放): %0.4f' % r2_score(y_valid, model_rfr.predict(X_valid))) print('验证集上的R平方分数-随机森林(标准化): %0.4f' % r2_score(y_valid, model_rfr_standard.predict(X_valid_standard))) print('验证集上的R平方分数-随机森林(归一化): %0.4f' % r2_score(y_valid, model_rfr_minmax.predict(X_valid_minmax))) print('验证集上的R平方分数-随机森林(百分位数): %0.4f' % r2_score(y_valid, model_rfr_robust.predict(X_valid_robust))) print('验证集上的R平方分数-随机森林(规范化): %0.4f' % r2_score(y_valid, model_rfr_normalize.predict(X_valid_normalizer)))
    展开

    作者回复: ✌️

    
    
  • Matthew
    2023-05-31 来自江苏
    课后作业第1题: ## 四种特征缩放器比较 # 第一种缩放 标准化 from sklearn.preprocessing import StandardScaler #导入标准化缩放器 scaler = StandardScaler() #创建标准化缩放器 X_train_standard = scaler.fit_transform(X_train) #拟合并转换训练集数据 X_valid_standard = scaler.transform(X_valid) #转换验证集数据 X_test_standard = scaler.transform(X_test) #转换测试集数据 # 第二种缩放 归一化 from sklearn.preprocessing import MinMaxScaler #导入归一化缩放器 scaler = MinMaxScaler() #创建归一化缩放器 X_train_minmax = scaler.fit_transform(X_train) #拟合并转换训练集数据 X_valid_minmax = scaler.transform(X_valid) #转换验证集数据 X_test_minmax = scaler.transform(X_test) #转换测试集数据 # 第三种缩放 百分位数缩放 from sklearn.preprocessing import RobustScaler #导入归一化缩放器 scaler = RobustScaler() #创建百分位数缩放器 X_train_robust = scaler.fit_transform(X_train) #拟合并转换训练集数据 X_valid_robust = scaler.transform(X_valid) #转换验证集数据 X_test_robust = scaler.transform(X_test) #转换测试集数据 # 第四种缩放 规范化缩放 from sklearn.preprocessing import Normalizer #导入归一化缩放器 scaler = Normalizer() #创建规范化缩放器 X_train_normalizer = scaler.fit_transform(X_train) #拟合并转换训练集数据 X_valid_normalizer = scaler.transform(X_valid) #转换验证集数据 X_test_normalizer = scaler.transform(X_test) #转换测试集数据 #----------------------------------------------------------------------# ## 模型、训练、评估 # 选择算法创建模型 from sklearn.ensemble import RandomForestRegressor #导入随机森林回归模型 model_rfr = RandomForestRegressor() model_rfr_standard = RandomForestRegressor() model_rfr_minmax = RandomForestRegressor() model_rfr_robust = RandomForestRegressor() model_rfr_normalize = RandomForestRegressor() # 训练模型 model_rfr.fit(X_train, y_train) model_rfr_standard.fit(X_train_standard, y_train) model_rfr_minmax.fit(X_train_minmax, y_train) model_rfr_robust.fit(X_train_robust, y_train) model_rfr_normalize.fit(X_train_normalizer, y_train)
    展开

    作者回复: ✌️

    
    
  • Geek_e0514a
    2023-03-21 来自重庆
    StandardScaler 这种变换会不会影响数据的特征

    作者回复: 通常不会改变数据的特征,因为不会改变数据分别。对数据进行线性变换,使其具有零均值和单位方差。这种变换的目的是消除数据之间的量纲差异,使得不同特征具有相似的尺度。

    
    
  • Geek_c66559
    2022-03-08
    老师,问个问题,根据相关性热力图中各特征值的相关性,也可以作为特征值选择依据吧?

    作者回复: 可以啊,可视化的目的就是为了下一步做特征工程。

    
    
  • iron
    2022-12-28 来自浙江
    我敢说这一章关于虚拟变量和独热编码的区别,没几个“零基础”的兄弟能看懂,反正要不是再去百度研究几小时,我是肯定看不懂。
    
    3
  • Aurore
    2023-01-10 来自广东
    X_train_standard = scaler.fit_transform(X_train) #拟合并转换训练集数据X_valid_standard = scaler.transform(X_valid) #转换验证集数据 想要咨询一下这种特征缩放,用训练集的数据得到的参数,怎么应用在实际的模型推理的现网数据呢
    
    