怎么提高网站加载速度十大装潢公司上海
web/
2025/9/27 21:44:47/
文章来源:
怎么提高网站加载速度,十大装潢公司上海,北京做网站设计招聘,学科网站建设标准添加更多特征会使所有的模型变得更加复杂#xff0c;从而增大过拟合的可能性。
在添加新特征或处理一般的高位数据集时#xff0c;最好将特征的数量减少到只包含最有用的那些特征#xff0c;并删除其余特征#xff0c;这样会得到泛化能力更好、更简单的模型。
对于如何判…添加更多特征会使所有的模型变得更加复杂从而增大过拟合的可能性。
在添加新特征或处理一般的高位数据集时最好将特征的数量减少到只包含最有用的那些特征并删除其余特征这样会得到泛化能力更好、更简单的模型。
对于如何判断每个特征的作用有多大有三种基本策略单变量统计、基于模型的选择、迭代选择。所有的这些方法都是监督方法即它们需要目标来拟合模型。这也就是说我们需要将数据划分为训练集和测试集并只在训练集上拟合特征选择。
在单变量统计中我们计算每个特征和目标值之间的关系是否存在统计显著性然后选择具有最高置信度的特征。对于分类问题这也被称为方差分析ANOVA。这些测试的一个关键性质就是他们是单变量的。即它们只单独考虑每个特征。因此如果一个特征只有在与另一个特征合并时才具有信息量那么这个特征将被舍弃。单变量测试的计算速度通常很快并且不需要构建模型。另一方面他们完全独立于你可能想要在特征选择之后应用的模型。
想要在scikit-learn中使用单变量特征选择你需要进行一项测试对分类问题通常是f_classif对回归问题通常是f_regression然后基于测试中确定的p值来选择一种舍弃特征的方法。所有舍弃参数的方法都是用阈值来舍弃所有p值过大的特征因为这意味着它们不可能与目标值相关。计算阈值的方法各有不同最简单的事SelectKBest和SelectPercenttile前者选择固定数量的k个特特征后者选择固定百分比的特征。我们将分类的特征选择应用于cancer数据集为了使任务难一点我们将向数据中添加一些没有信息量的噪声特征。
我们期望特征选择能够识别没有信息量的特征并删除它们
from sklearn.datasets import load_breast_cancer
from sklearn.feature_selection import SelectKBest,SelectPercentile
from sklearn.model_selection import train_test_split
import numpy as npcancerload_breast_cancer()
rngnp.random.RandomState(42)
noiserng.normal(size(len(cancer.data),50))
#向数据中添加噪声
#前30个特征来自数据集后50个是噪声
X_w_noisenp.hstack([cancer.data,noise])X_train,X_test,y_train,y_testtrain_test_split(X_w_noise,cancer.target,random_state0,test_size.5)selectSelectPercentile(percentile50)
select.fit(X_train,y_train)X_train_selectedselect.transform(X_train)print(训练集形状{}.format(X_train.shape))
print(特征选择训练集形状{}.format(X_train_selected.shape)) 可以发现特征数量由80个减少为40个我们可以用get_support方法来查看哪些特征被选中它会返回所选特征的布尔遮罩mask maskselect.get_support()
print(mask)
plt.matshow(mask.reshape(1,-1),cmapgray_r)
plt.xlabel(Sample index)
plt.show() 从可视化图中可以看到大多数所选择的特征都是原始特征并且大多数噪声特征都已被删除。但原始特征的还原并不完美。比较Logistic回归在所有特征上的性能和仅使用所选特征的性能
X_test_selectedselect.transform(X_test)
lrLogisticRegression()
lr.fit(X_train,y_train)
print(所有特征下的score{:.3f}.format(lr.score(X_test,y_test)))
lr.fit(X_train_selected,y_train)
print(所选特征下的score{:.3f}.format(lr.score(X_test_selected,y_test))) 这个例子下删除噪声特征可以提高性能即使丢失了某些原始特征。这是一个非常简单的示例在真实数据上的结果要更加复杂。如果特征量太大以至于无法构建模型或者怀疑许多特征完全没有信息量那么单变量特征选择还是非常有用的。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/82990.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!