scikit-learn svm初探

本文将深入探讨如何使用Python的scikit-learn库进行支持向量机(SVM)的学习和应用,包括其基本原理、参数调整以及在实际问题中的应用案例。
摘要由CSDN通过智能技术生成
下面的代码仅仅作为伪代码来看,因为拟合效果不好,思考是优化求解的问题,
仅有w_bar_2_1的解是收敛的,但是拟合效果很差。
svm实现要进一步思考。

import numpy as np
from sklearn import svm
from scipy.optimize import minimize
from numpy.linalg import norm
from sklearn import datasets

from functools import partial
import copy

iris = datasets.load_iris()
print iris.data.shape, iris.target.shape

#w_bar is [b ,w]
def func(w_bar):
 return norm(w_bar[1:]) ** 2 / 2

def strain(data, target, w_bar):
 return target * np.dot(data, w_bar) - 1

#print strain(np.array([[0, 1], [2, 3]]), np.array([0, 1]), np.array([0, 1]))

#print np.unique(iris.target, return_counts = True)
data = np.append(iris.data, iris.target.reshape(iris.target.shape[0], 1), axis = 1)

data_0 = np.ndarray(shape = (0, 5))
data_1 = np.ndarray(shape = (0, 5))
data_2 = np.ndarray(shape = (0, 5))


for i in range(data.shape[0]):
 data_for_append = data[i,:].reshape(1, data[i,:].shape[0])
 if data[i,-1] == 0:
  data_0 = np.append(data_0, data_for_append, axis = 0)
 elif data[i,-1] == 1:
  data_1 = np.append(data_1, data_for_append, axis = 0)
 else:
  data_2 = np.append(data_2, data_for_append, axis = 0)


def generate_one_svm(X_y):

 #print X_y
 X = np.ones([X_y.shape[0], X_y.shape[1]])
 X[:,1:] = X_y[:,:-1]
 y = X_y[:,-1].reshape(X_y.shape[0])

 strain_0 = partial(strain, X, y)

 cons = ({
   'type': 'ineq',
   'fun': strain_0
  },)

 res = minimize(func, np.ones([X.shape[1]]), constraints = cons ,\
   method = 'S
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值