sklearn特征工程
时间: 2023-08-08 08:11:50 浏览: 105
特征工程是指从原始数据中提取特征并将其转换为适合机器学习模型的格式。它是机器学习流程中一个极其关键的环节,因为正确的特征可以减轻构建模型的难度,从而使机器学习流程输出更高质量的结果。在sklearn中,有多种方法可以进行特征工程。
一种常见的方法是使用StandardScaler类实现列标准化。这个类可以将每个特征的值转换为均值为0,方差为1的标准正态分布。例如,可以使用以下代码对特征进行标准化:
```python
import numpy as np
from sklearn.preprocessing import StandardScaler
X_train = np.array([[ 1., -1., 2.],[ 2., 0., 0.],[ 0., 1., -1.]])
std = StandardScaler()
X_train_std = std.fit_transform(X_train)
```
另一种方法是使用基于树的方法(如决策树、随机森林)或扩展的线性模型来处理非线性关系。这些方法对于非线性关系的建模效果较好,并且不需要太多的调试。例如,可以使用以下代码对波士顿房屋价格数据集进行特征处理:
```python
from sklearn.cross_validation import cross_val_score, ShuffleSplit
from sklearn.datasets import load_boston
from sklearn.ensemble import RandomForestRegressor
boston = load_boston()
X = boston["data"]
Y = boston["target"]
names = boston["feature_names"]
rf = RandomForestRegressor(n_estimators=20, max_depth=4)
scores = []
for i in range(X.shape[1]):
score = cross_val_score(rf, X[:, i:i+1], Y, scoring="r2", cv=ShuffleSplit(len(X), 3, .3))
scores.append((round(np.mean(score), 3), names[i]))
print(sorted(scores, reverse=True))
```
除了以上方法,还有其他一些特征处理的技术,如特征选择、特征降维等。特征工程的目的是提取有用的特征,减少无用的特征,并为机器学习模型提供更好的输入。通过合适的特征工程,可以提高模型的性能和准确性。
阅读全文