python经典的机器学习框架
目前主要聚焦于有监督学习,通过这个框架来实现一些经典的机器学习模型
1:分类:
2:回归
3:聚类
一:支持向量机SVM的实现:
定义:
支持向量机(SVM)是一组用于分类,回归监督学习方法。
支持向量机的优点是:
- 在高维空间仍然有效。
- 在维度数量大于样本数量的情况下仍然有效。
- 在决策函数中使用训练点的子集(称为支持向量),因此它也具有内存效率。
- 多功能:可以为决策功能指定不同的内核功能。提供了通用内核,但也可以指定自定义内核。
支持向量机的缺点包括:
- 如果特征的数量远远大于样本数量,在选择内核函数时以及正则化将对过拟合产生很大的影响。
- SVM不直接提供的概率估计,他需要五重交叉验证。
实现:
SVC,NuSVC和LinearSVC是能够对数据集执行多样分类。
SVC和NuSVC是相似的方法,但接受稍微不同的参数,并具有不同的计算公式。另一方面,LinearSVC是针对线性内核的情况的SVC的另一种实现方法。
与其他分类器一样,SVC,NuSVC和LinearSVC将两个数组作为输入:训练样本的大小为[n_samples,n_features]的数组X以及类标签(字符串或整数)的数组y,size [n_samples]:
最简单的分类实现:
代码语言:javascript复制#导入svm算法
>>> from sklearn import svm
#这里预测好的数据以np.array形式出现,y是标签,X是用于预测的数据
#具体一点比较好理解
属性1 属性2 分类
A 0 0 0
B 1 1 1
C 2 2
#这样的话就是已知样本A,样本B的属性以及分类,求样本C的分类
>>> X = [[0, 0], [1, 1]]
>>> y = [0, 1]
#设置分类器
>>> clf = svm.SVC(gamma='scale')
#使用数据训练分类器,查看其相关参数(参数是默认值)
>>> clf.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr',degree=3, gamma='scale', kernel='rbf',
max_iter=-1, probability=False,random_state=None, shrinking=True,
tol=0.001, verbose=False)
#使用分类器进行预测
>>> clf.predict([[2., 2.]])
#预测结果为样本C属于1类
array([1])
#SVM函数的训练模型取决于训练数据的某些子集,称为支持向量。这些支持向量的一些属性可以在找到support_vectors_,support_和n_support中找到
>>> # 获取支持向量的索引,就是分类标准
In [11]: clf.support_
Out[11]: array([0, 1], dtype=int32)
>>> #获取支持向量
In [12]: clf.support_vectors_
Out[12]:
array([[0.,0.],
[1., 1.]])
#
In [13]: clf.n_support_
Out[13]: array([1, 1], dtype=int32)
>>> # 获取支持向量>>> clf.support_vectors_
array([[0., 0.], [1., 1.]])>>> # 获取支持向量的索引>>> clf.support_
array([0, 1]...)>>> # 获取每一类支持向量的数目>>> clf.n_support_
array([1, 1]...)