精华内容
下载资源
问答
  • python 实现简单的SVM分类
    2021-08-06 13:04:47
    def getData2():
        r"""
        使用numpy生成随机数;
        使用pandas构造满足条件的随机数;
        :return:
        """
        df = pd.DataFrame()
        df['X'] = np.random.randint(1,100,size=(100))
        df['Y'] = np.random.randint(1,100,size=(100))
    
        G1 = df[(df['X']>50) & (df['Y']>50)]
        G2 = df[(df['X']<50) & (df['Y']<50)]
    
        G1 = G1.reset_index(drop=True)
        G2 = G2.reset_index(drop=True)
    
        return (G1, G2)

    # 解决分类问题
    import math
    
    from LinearRegression import *
    
    def calDistance(x,y,w,b):
        r"""
        计算一个点(x,y)到直线(w,b)的距离
        :param x: point x
        :param y: point y
        :param w: 直线的斜率
        :param b: 直线的截距
        :return: 返回距离
        """
        x0 = x
        y0 = y
        x1 = (y0-b)/w
        y1 = w*x0+b
        d0 = math.sqrt((x0-x1)**2+(y0-y1)**2)
        if d0==0:
            return 0
        else:
            dis = abs(x0-x1)*abs(y0-y1)/d0
            return dis
    
    def getSVMLoss(G1, G2, w, b):
        r"""
        计算在(w,b)的前提下,整个数据集的loss;
        loss function 是 hinge loss
        :param G1:第一类样本pandas,第一列是X,第二列是Y
        :param G2:第二类样本pandas,第一列是X,第二列是Y
        :param w:斜率
        :param b:截距
        :return:返回当前斜率和截距下的loss
        """
        total_loss = 0
    
        #G1的loss
        class1Num = G1.shape[0]
        d1min = 99999
        x_f_1, y_f_1 = 0, 0
        for i in range(class1Num):
            x = G1.iloc[i,0]
            y = G1.iloc[i,1]
            d = calDistance(x,y,w,b)
            if (w*x+b) > y:
                total_loss += d
    
            ####
            if d < d1min:
                x_f_1, y_f_1 = x, y
                d1min = d
    
        #G2的loss
        class2Num = G2.shape[0]
        d2min = 99999
        x_f_2, y_f_2 = 0, 0
        for i in range(class2Num):
            x = G2.iloc[i,0]
            y = G2.iloc[i,1]
            d = calDistance(x,y,w,b)
            if w*x+b < y: #分类错误进行惩罚
                total_loss += d
    
            if d < d2min:#分类错误进行惩罚
                x_f_2, y_f_2 = x, y
                d2min = d
    
        total_loss = total_loss + abs(d2min - d1min)#如果两者相距太远,进行惩罚
    
        return total_loss
    
    
    def SVMFit(G1, G2):
        w_last, b_last = -5, 100
        w, b = -6, 99
        loss_last = 1
        loss = 0
        stop = 10000
        i = 0
        eta = 1e-4
        count = 0
        while(i < stop):
            print("{:05d}: w is {:.2f}, b is {:.2f}, loss is {:.2f}".format(i,w,b,loss))
            loss = getSVMLoss(G1, G2, w, b)
            if loss == 0:
                break
            if loss - loss_last < 0.1:
                count += 1
            if count>1000:
                break
            wn = w - eta * (loss-loss_last)/(w-w_last)
            bn = b - eta * (loss-loss_last)/(b-b_last)
            w_last = w
            w = wn
            b_last = b
            b = bn
            loss_last = loss
            i += 1
    
        return w, b
    
    
    
    if __name__ == "__main__":
        print("to solve classification problem")
        np.random.seed(5)
        G1, G2 = getData2()
        fig, ax = plt.subplots()
        ax.scatter(G1['X'], G1['Y'], color="C0")
        ax.scatter(G2['X'], G2['Y'], color="C1")
    
        ax.plot(np.array([50,50]), np.array([0,100]))
        ax.plot(np.array([0,100]), np.array([50,50]))
    
        w, b = -6, 99
        x = np.arange(0, 100, 1)
        y = w * x + b
        ax.plot(x, y, color="C2",label="original")
        w_f, b_f = SVMFit(G1, G2)
        y_f = w_f * x + b_f
        ax.plot(x, y_f, color="C3",label="final")
        ax.legend()
    
        ax.set_xlim(xmin = 0, xmax = 100)
        ax.set_ylim(ymin = 0, ymax = 100)
        fig.show()
        # x,y,w,b
        # print("距离是:{:.2f}".format(calDistance(1,0,1,0)))
    
    

     

    更多相关内容
  • python 自定义生成多核svm进行分类
  • 下载后,安装好版本匹配的python3.6,numpy,scipy,matplot,sklearn,skimage等包,后直接可以运行,无需修改代码。运行后输入y,就可以实习自带的图像分类(小鸡,小鸭,蛇,猫等分类)。
  • 利用Libsvm进行SVM分类python)非常详细的说明文档,含两个文档说明,方便大家参考学习。
  • 代码是基于SVM分类Python实现,原文章节题目和code关系不大,或者说给出已处理好数据的方法缺失、源是图像数据更是不见踪影,一句话就是练习分类器(▼㉨▼メ) 源代码直接给好了K=30,就试了试怎么选的,挑选...
  • 利用python,实现基于SVM的文本分类. 代码见 https://github.com/yangysc/Document-Classification
  • 卷积神经网络(CNN)用来提取特征,采用SVM分类器进行训练和分类
  • 鸢尾花数据集分析与线性分类。数据统计特性分析。Logistic回归和SVM方法,分类可视化
  • pythonsvm分类

    热门讨论 2014-03-03 10:56:10
    基于pythonSVM分类算法,可以直接使用,包含源代码,支持参数设定
  • from sklearn import datasets,linear_model,cross_validation,svm def load_data_regression(): diabetes = datasets.load_diabetes() return cross_validation.train_test_split(diabetes,diabetes.target,te
  • svm python 实现对故障信号的分类处理
  • Python实现GA(遗传算法)对SVM分类模型参数的优化资料说明:包括数据集+源代码+Word文档说明。 资料内容包括: 1)需求分析; 2)数据采集; 3)数据预处理; 4)探索性数据分析; 5)特征工程; 6)机器建模; 7)模型评估...
  • svm图像分类python代码实现续

    千次阅读 热门讨论 2021-05-31 17:41:32
    svm图像分类python代码实现续 这篇博客诗接上前面一篇svm图像分类得一篇续集 svm分类代码如下 #os.system("pause") #Svm 训练: import sys import os import cv2 import numpy as np from sklearn.svm import ...

    svm图像分类python代码实现续

    这篇博客诗接上前面一篇svm图像分类得一篇续集
    svm分类代码如下

     
    #os.system("pause")
    
    #Svm 训练:
    import sys
    import os
    import cv2
    import numpy as np
    from sklearn.svm import SVC
    from sklearn.model_selection import train_test_split
    import time
    import pickle
    #help(SVC)
    
    SHAPE = (30, 30)
    def getImageData(directory):
       s = 1
       feature_list = list()
       label_list   = list()
       num_classes = 0
       for root, dirs, files in os.walk(directory):
          for d in dirs:
             num_classes += 1
             images = os.listdir(root+d)
             for image in images:
                s += 1
                label_list.append(d)
                feature_list.append(extractFeaturesFromImage(root + d + "/" + image))
    
       return np.asarray(feature_list), np.asarray(label_list)
    
    def extractFeaturesFromImage(image_file):
       img = cv2.imread(image_file)
       img = cv2.resize(img, SHAPE, interpolation = cv2.INTER_CUBIC)
       img = img.flatten()
       img = img / np.mean(img)
       return img
       
    
    if __name__ == "__main__":
       
       directory ="C:/learn_data/2021_car/image/" 
    
    
       feature_array, label_array = getImageData(directory)
    
       X_train, X_test, y_train, y_test = train_test_split(feature_array, label_array, test_size = 0.2, random_state = 42)
    
       if os.path.isfile("svm_model.pkl"):
          svm = pickle.load(open("svm_model.pkl", "rb"))
       else:
          svm = SVC(kernel='rbf',gamma=0.001)
          svm.fit(X_train, y_train)
          pickle.dump(svm, open("C:/learn_data/2021_car/svm_model.pkl", "wb"))
    
       print("Testing...\n")
     
       right = 0
       total = 0
       for x, y in zip(X_test, y_test):
          x = x.reshape(1, -1)
          prediction = svm.predict(x)[0]
          if y == prediction:
             right += 1
          total += 1
    
       accuracy = float(right) / float(total) 
    
       print (str(accuracy) + "% accuracy")
       print ("Manual Testing\n")
    print("success")
       
    os.system("pause")
    
    

    标题

    那么数据集是什么样的呢
    这里我要说一下了,这一次做的三分类,数据集的文件结构如下:
    在这里插入图片描述
    也就是说,这里的image就是我们的训练集,里面分为三个子文件夹,这三个子文件夹里只能有图片,其他的任何文件都不能有
    在这里插入图片描述
    好的,那么对于文件没是没有要求的,那么如果你现在想要进行二分类,三分类,也就改变image下的子文件数量,这里应该能听懂

    如果调用模型,在上一篇博客有着介绍可以参考。
    博客链接在这里
    这次的数据集已上传到我的资源,是三类车牌号数据。

    展开全文
  • SVMPython实现

    2018-08-02 15:07:04
    机器学习中的SVM算法的SVC实现,亲测可运行,效果不错
  • 对于分类,SVM最初用于解决二分类问题,多分类问题可通过构建多个SVM分类器解决。SVM具有两大特点:1.寻求最优分类边界,即求解出能够正确划分训练数据集并且几何间隔最大的分离超平面,这是SVM的基本思想;2.基于核...
  • 该文件包含鸢尾花分类Python源程序和数据集,数据集内包含 3 类鸢尾花,分别为山鸢尾(setosa)、变色鸢尾(versicolor)和维吉尼亚鸢尾(virginica)。每类各 50 个数据,每条记录有 4 项特征:花萼长度、花萼...
  • Three classifications of iris data using SVM based on Anaconda
  • Python+OpenCV+SVM

    2020-05-20 20:15:19
    支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,本文是 OpenCV的简单SVM例程
  • 主要为大家详细介绍了手把手教你python实现SVM算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • python3.6,svm-hog图像分类,成功测试。代码图片打包下载。直接运行。

    python使用svm,hog进行图像分类时,需要使用sklearn,skimage,numpy,matplotlib等。这些包如果版本不对应很难成功运行代码。

    python3.6,numpy,matplotlib,scipy,sklearn匹配版本安装_Vertira的博客-CSDN博客先安装numpy,再安装scipy,再安装matplotlib这三个都是python3.6对应的版本。比较唯一,sk-learn 官网没有展示与python3.6对应的版本,但是使用清华源安装,可以安装到对应的版本。https://blog.csdn.net/Vertira/article/details/122317251用清华源安装,熟读更快

    python 安装numpy,matplotlib 清华源快速安装_Vertira的博客-CSDN博客pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simplepip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simplehttps://blog.csdn.net/Vertira/article/details/122171528

    svm_hog python源码下载地址

    https://download.csdn.net/download/Vertira/74005192https://download.csdn.net/download/Vertira/74005192

    下载的压缩文件及其解压后的文件

     

    配置好各种包后,直接运行hog_svm.py(注意:把raw_input (这个是python2.0版本的)改成 input(这个是python3的))

    运行后程序输出

     文件夹中的变化:

     多了几个文件夹和一个输出测试结果 result.txt. 上面三个文件夹中都有训练产生的特征和参数。

    result.txt里面是预测的结果

    欢迎各位客官,点赞,收藏,加关注。

    展开全文
  • python语言使用LBP算法提取特征向量SVM算法训练模型和识别分类整套文件。内有训练和测试、验证图片集,训练和测试程序分两个py文件。训练使用lbp_train.py文件,测试和验证使用均使用lbp_test.py文件,更改训练集和...
  • 题目是将图片库中的纹理图片裁剪成九份,其中五份做训练集,四份做测试集,先提取图片LBP特征 ,最后用svm支持向量机进行学习,在预测测试集里的图片是哪一类纹理。 正常情况下是需要调参的,即调整SVM的参数,但图...
  • 基于LSA和SVM的文本分类模型的研究,本文提出了一种基于标题类别语义识别的文本分类算法
  • CNN-SVM_SVMCNN_SVM特征提取_SVM_python_SVM分类_源码.zip
  • 数据集介绍 总共包含150行数据 每一行数据由 4 个特征值及一个目标值组成。 4 个特征值分别为:萼片长度、萼片宽度、花瓣长度、花瓣宽度 ...from sklearn import svm from sklearn import model_selection import mat
  • SVMpython

    2018-06-07 14:16:02
    SVM分类的实用指南!(主要是为初学者编写的) 我们现在有一个简单的脚本(easy.py),用于不了解SVM的用户。它使得一切都自动化 - 从数据缩放到参数选择。 参数选择工具grid.py生成以下交叉验证准确度等值线。要...
  • 基于p基于pythonsvm算法源代码ython的svm算法源代码

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,709
精华内容 12,283
关键字:

svm分类python