sklearn中PolynomialFeatures多项式特征参数

PolynomialFeatures:多项式回归参数

PolynomialFeatures参数:

现在有(a,b)两个特征,使用degree=2的二次多项式则为(1,a, a^2, ab, b ,b^2)。
PolynomialFeatures主要有以下几个参数:

degree:度数,决定多项式的次数

interaction_only: 默认为False,字面意思就是只能交叉相乘,不能有a^2这种.

include_bias: 默认为True, 这个bias指的是多项式会自动包含1,设为False就没这个1了.

order:有"C" 和"F" 两个选项。官方写的是在密集情况(dense case)下的输出array的顺序,F可以加快操作但可能使得subsequent estimators变慢。

hinge损失函数:

在机器学习中,hinge loss是一种损失函数,它通常用于"maximum-margin"的分类任务中,如支持向量机。数学表达式为:

                                                L(y)=max(0,1-y *y_hat)

其中 y_hat表示预测输出,通常都是软结果(就是说输出不是0,1这种,可能是0.87。),y 表示正确的类别。

图像:

sklearn中PolynomialFeatures多项式特征参数_第1张图片

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC #线性SVM模型;
from sklearn.datasets import load_iris


iris_data=load_iris()
print(iris_data["data"])
print("============================")
X=iris_data["data"][:,(2,3)] #取长度和宽度;
# y=iris_data["target"]
# print(y)
y=(iris_data["target"] == 2).astype(np.float64)

#建立线性的模型:
svm_clf=Pipeline([
    #标准化
    ("scaler",StandardScaler()),
    #svc 线性:
    ("linear_svc",LinearSVC(C=1,loss="hinge"))] #C是软间隔参数;防止过拟合的现象;
)

svm_clf.fit(X,y)
res=svm_clf.predict([[6.3,1.2]])
print("res:",res)
from sklearn.datasets import make_moons
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures,StandardScaler #多项式参数;;
from sklearn.svm import LinearSVC,LinearSVR
import warnings
warnings.filterwarnings("ignore")

X,y=make_moons(n_samples=100,noise=0.15)
nolinear_svm_clf=Pipeline([
    #多项式特征线性SVM分类器
    ("features",PolynomialFeatures(degree=3)), 
    ("scaler",StandardScaler()),
    ("svm_clf",LinearSVC(C=10,loss="hinge"))#loss="hinge";svm常用的损失函数;
])

nolinear_svm_clf.fit(X,y)

你可能感兴趣的:(机器学习,sklearn,机器学习,python)