透过数据挖掘学python

1.svm(Support Vector Machine)是机器学习中为二分类而设计的一种算法,旨在找到一个最佳的分离超平面的分离器,使得数据集上的正负样本间隔最大。简单例子如下:


from sklearn import  svm

x = [[2,0],[1,1],[2,3]] #三个点
y = [0,0,1] #三个点对应的特征值
clf = svm.SVC(kernel='linear') #clf表示分类器
clf.fit(x,y)

print(clf) #输出分类器
print(clf.support_vectors_) #输出哪几个点是在求得的平面上
print(clf.support_) #输出在平面上的几个点是在测试集合中的的几个
print(clf.n_support_) #输出1 和 0中的两个特征值各有几个点
print(clf.predict([[2,0]])); #预测[2,0]这个点的特征值 但这个地方必须是一个列表的形式

获得结果如下

D:\python\pycharm\python大作业\venv\Scripts\python.exe D:/python/pycharm/python大作业/test.py
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='linear',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
[[1. 1.]
 [2. 3.]]
[1 2]
[1 1]
[0]

2.SVC也能直接用来进行多分类,关键代码如下

clf = svm.SVC(decision_function_shape='ovo') # 表示分类器

ovo 以及 ovr  都多分类中的常见的方法有,全称依次为one-against-one和one-against-all。

他们两者之间具体的区别我不清楚,用两者分别测试了感觉也没太大区别。想清楚知道的可以查看这位老哥的

博客https://blog.csdn.net/yiqingyang2012/article/details/53437076


3.通常拿到的数据中都会有数据不均衡的问题,这时候就需要我们对数据进行处理。

https://blog.csdn.net/jiandanjinxin/article/details/50857205

svc模型不是很好的算法,感觉面对数据不均衡的问题时,处理之后的结果准确率不是很高,但我因为考研,只是为了应付作业,就没有换算法。

我的处理方式是,修改权重,关键代码如下:

clf.class_weight = 'balanced'
一下子正确率提高了很多哈哈省了很多麻烦








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值