美文网首页
数据升维-交互特征和多项式特征代码实践

数据升维-交互特征和多项式特征代码实践

作者: 万州客 | 来源:发表于2022-04-30 09:57 被阅读0次

多项式转换,metis里就用上了。。。

一,代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import OneHotEncoder
from sklearn.neural_network import MLPRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

'''

array_1 = [1, 2, 3, 4, 5]
array_2 = [6, 7, 8, 9, 0]
array_3 = np.hstack((array_1, array_2))
print('将数组2添加到数据1中后得到:{}'.format(array_3))

rnd = np.random.RandomState(38)
x = rnd.uniform(-5, 5, size=50)
y_no_noise = (np.cos(6*x) + x)
X = x.reshape(-1, 1)
y = (y_no_noise + rnd.normal(size=len(x))) / 2
# plt.plot(X, y, 'o', c='r')
# plt.show()
bins = np.linspace(-5, 5, 11)
target_bin = np.digitize(X, bins=bins)
print('装箱数据范围:{}'.format(bins))
print('前十个数据点特征值:{}'.format(X[:10]))
print('前十个数据点所在的箱子:'.format(target_bin[:10]))

one_hot = OneHotEncoder(sparse=False)
one_hot.fit(target_bin)
X_in_bin = one_hot.transform(target_bin)
X_stack = np.hstack([X, X_in_bin])
print(X_stack.shape)
X_multi = np.hstack([X_in_bin, X*X_in_bin])
print(X_multi.shape)
print(X_multi[0])
line = np.linspace(-5, 5, 1000, endpoint=False).reshape(-1, 1)
new_line = one_hot.transform(np.digitize(line,bins=bins))
line_stack = np.hstack([line, new_line])
line_multi = np.hstack([new_line, line*new_line])

mlpr = MLPRegressor().fit(X_multi, y)

plt.plot(line, mlpr.predict(line_multi), label='MLP for interaction')
plt.ylim(-4, 4)
for vline in bins:
    plt.plot([vline, vline], [-5, 5], ':', c='k')
plt.legend(loc='lower right')
plt.plot(X, y, 'o', c='r')
plt.show()
'''

line = np.linspace(-5, 5, 1000, endpoint=False).reshape(-1, 1)
# new_line = one_hot.transform(np.digitize(line,bins=bins))


rnd = np.random.RandomState(38)
x = rnd.uniform(-5, 5, size=50)
y_no_noise = (np.cos(6*x) + x)
X = x.reshape(-1, 1)
y = (y_no_noise + rnd.normal(size=len(x))) / 2

poly = PolynomialFeatures(degree=20, include_bias=False)
X_poly = poly.fit_transform(X)
print(X_poly.shape)

print('原始数据集中的第一个样本特征:{}'.format(X[0]))
print('处理后的数据集中的第一个样本特征:{}'.format(X_poly[0]))

print('PolynomialFeatures对原始数据的处理:{}'.format(poly.get_feature_names()))
LNR_poly = LinearRegression().fit(X_poly, y)
line_poly = poly.transform(line)
plt.plot(line, LNR_poly.predict(line_poly), label='Linear Regressor')
plt.xlim(np.min(X) - 0.5, np.max(X) + 0.5)
plt.ylim(np.min(y) - 0.5, np.max(y) + 0.5)
plt.plot(X, y, 'o', c='r')
plt.legend(loc='lower right')
plt.show()

二,效果


2022-04-27 20_02_47-MessageCenterUI.png 2022-04-27 19_46_08-Metis-Org – ai_test.py.png

相关文章

  • 数据升维-交互特征和多项式特征代码实践

    多项式转换,metis里就用上了。。。 一,代码 二,效果

  • 算法笔记(18)数据升维及Python代码实现

    数据集特征不足的情况下,需要对数据集的特征进行扩充,两种方法:交互式特征和多项式特征。 向特征集添加交互式特征 交...

  • t-SNE降维原理

    前言 PCA是一种线性降维算法,不能解释特征之间的复杂多项式关系。如果特征与特征之间的关系是非线性的话,用PCA可...

  • 《机器学习》第11章 特征选择

    1、特征选择 特征选择和降维计算一样,都能有效的减轻维数灾难问题,事实上,特征选择和降维计算是处理高维数据的两大主...

  • FM与FFM

    FM算法旨在解决稀疏数据下的特征组合问题。 多项式模型的特征组合要求两个特征都是非零的,但是在实际工程中的稀疏数据...

  • 机器学习 —「特征工程」方法论

    什么是特征工程? 数据预处理 特征选择 降维 1. 什么是特征工程? 有这么一句话在业界广泛流传,数据和特征决定了...

  • 06 特征工程 - 特征选择

    05 特征工程 - 缺省值填充 当做完特征转换后,实际上可能会存在很多的特征属性,比如:多项式扩展转换、文本数据转...

  • sklearn学习 — 数据降维

    数据降维 降维:特征的数量 特征选择 主成分分析 特征选择 冗余:部分特征的相关的高,容易消耗计算性能 噪声:部分...

  • 机器学习入门(猴子live)

    数据处理步骤 获得数据预处理数据特征提取特征选择和特征降维 数据预处理6个步骤 1.选择子集2.列名重命名3.缺失...

  • 机器学习学习笔记(八)多项式回归与模型泛化

    对非线性的数据进行处理,相应的预测 ----添加新的特征:原有的特征进行多项式组合 scikit-learn中的多...

网友评论

      本文标题:数据升维-交互特征和多项式特征代码实践

      本文链接:https://www.haomeiwen.com/subject/onnlyrtx.html