SVM算法

LinearSVC 参数配置详解及其应用 LinearSVC 是 scikit-learn 库中用于线性支持向量机(SVM)分类的模型,特别适合高维数据(如文本分类)和大规模数据集。它通过最大化分类间隔来实现高效分类,但不支持核方法(如非线性变换)。以下是针对您指定的参数。训练 LinearSVC 模型。数据集以鸢尾花(Iris)为例,适用于多分类任务。以下是一个完整的代码示例,展示如何使用。的详细解释,并结合应用场景逐步说明。 阅读详情

一、sklearn中的SVM

1.准备一个简单二分类数据集

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
iris = datasets.load_iris()
x = iris.data
y = iris.target
# 只做一个简单的二分类
x = x[y<2, :2]
y = y[y<2]
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述

2.实现svm,先使用一个比较大的C

# 标准化数据
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC
standardscaler = StandardScaler()
standardscaler.fit(x)
x_standard = standardscaler.transform(x)
svc = LinearSVC(C=1e9)
svc.fit(x_standard, y)
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)
    x_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(x_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
plot_decision_boundary(svc, axis=[-3, 3, -3, 3])
plt.scatter(x_standard[y==0, 0], x_standard[y==0, 1], color='red')
plt.scatter(x_standard[y==1, 0], x_standard[y==1, 1], color='blue')
plt.show()

在这里插入图片描述

3.使用一个比较小的C,对比C取不同值的效果

svc2 = LinearSVC(C=0.01)
svc2.fit(x_standard, y)
plot_decision_boundary(svc2, axis=[-3, 3, -3, 3])
plt.scatter(x_standard[y==0, 0], x_standard[y==0, 1], color='red')
plt.scatter(x_standard[y==1, 0], x_standard[y==1, 1], color='blue')
plt.show()

在这里插入图片描述

4.画出除了决策边界以外的两条跟支持向量相关的直线

def plot_svc_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)
    x_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(x_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
    w = model.coef_[0]
    b = model.intercept_[0]
    # w0*x0 + w1*x1 + b = 0
    # x1 = -w0/w1 * x0 - b/w1
    plot_x = np.linspace(axis[0], axis[1], 200)
    up_y = -w[0]/w[1] * plot_x - b/w[1] + 1/w[1]
    down_y = -w[0]/w[1] * plot_x - b/w[1] - 1/w[1]
    up_index = (up_y >= axis[2]) & (up_y <= axis[3])
    down_index = (down_y >= axis[2]) & (down_y <= axis[3])
    plt.plot(plot_x[up_index], up_y[up_index], color='black')
    plt.plot(plot_x[down_index], down_y[down_index], color='black')
plot_svc_decision_boundary(svc, axis=[-3, 3, -3, 3])
plt.scatter(x_standard[y==0, 0], x_standard[y==0, 1], color='red')
plt.scatter(x_standard[y==1, 0], x_standard[y==1, 1], color='blue')
plt.show()

在这里插入图片描述

plot_svc_decision_boundary(svc2, axis=[-3, 3, -3, 3])
plt.scatter(x_standard[y==0, 0], x_standard[y==0, 1], color='red')
plt.scatter(x_standard[y==1, 0], x_standard[y==1, 1], color='blue')
plt.show()

在这里插入图片描述

svc3 = LinearSVC(C=0.1)
svc3.fit(x_standard, y)
# 从上述结果可以看出sklearn中对于svm封装的linearSVC默认对于多分类使用ovr,L2正则。
plot_svc_decision_boundary(svc3, axis=[-3, 3, -3, 3])
plt.scatter(x_standard[y==0, 0], x_standard[y==0, 1], color='red')
plt.scatter(x_standard[y==1, 0], x_standard[y==1, 1], color='blue')
plt.show()

在这里插入图片描述

二、SVM中使用多项式特征

1.svm解决非线性问题,先生成数据集

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
x, y = datasets.make_moons()
#x.shape
#y.shape
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述

2.给数据添加一些随机噪声

x, y = datasets.make_moons(noise=0.15, random_state=666)
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述

from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.svm import LinearSVC
from sklearn.pipeline import Pipeline
def PolynomiaSVC(degree, C=1.0):
    return Pipeline([('poly', PolynomialFeatures(degree=degree)),('std_scale', StandardScaler()),('linear_svc', LinearSVC(C=C))])
poly_svc = PolynomiaSVC(degree=3)
poly_svc.fit(x, y)
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)
    x_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(x_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
plot_decision_boundary(poly_svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述
除了使用这种增加多项式特征之后再给入线性svc中之外,还有一种方法可以实现类似的功能

from sklearn.svm import SVC
# 这种方法训练的过程并不完全是先将数据进行标准化,再使用linearSVC这么一个过程
# SVC中默认的C=0
def PolynomiaKernelSVC(degree, C=1.0):
    return Pipeline([('std_scale', StandardScaler()),('kernel_svc', SVC(kernel='poly', degree=degree, C=C))])# poly代表多项式特征
poly_kernel_svc = PolynomiaKernelSVC(degree=3)
poly_kernel_svc.fit(x, y)
plot_decision_boundary(poly_svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述

三、高斯核函数

1.通过高斯核函数映射来更加直观地理解整个映射的过程

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-4, 5, 1)
y = np.array((x >= -2) & (x <= 2), dtype='int')
# array([0, 0, 1, 1, 1, 1, 1, 0, 0])
plt.scatter(x[y==0], [0] * len(x[y==0]))
plt.scatter(x[y==1], [0] * len(x[y==1]))
plt.show()

在这里插入图片描述

def gaussian(x, l):
    gamma = 1.0
    return np.exp(-gamma *(x-l)**2)
l1, l2 = -1, 1
x_new = np.empty((len(x), 2))
for i,data in enumerate(x):
    x_new[i, 0] = gaussian(data, l1)
    x_new[i, 1] = gaussian(data, l2)
plt.scatter(x_new[y==0, 0], x_new[y==0, 1])
plt.scatter(x_new[y==1, 0], x_new[y==1, 1])
plt.show()

在这里插入图片描述

2.使用sklearn中封装的高斯核函数

最大化分离超平面与训练数据集的几何间隔gamma(γ)=1.0时

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
x, y = datasets.make_moons(noise=0.15, random_state=666)
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
def RBFKernelSVC(gamma=1.0):
    return Pipeline([('std_scale', StandardScaler()),('svc', SVC(kernel='rbf', gamma=gamma))])
svc = RBFKernelSVC(gamma=1.0)
svc.fit(x, y)
def plot_decision_boundary(model, axis):
    x0, x1 = np.meshgrid(np.linspace(axis[0], axis[1], int((axis[1] - axis[0])*100)).reshape(1, -1),np.linspace(axis[2], axis[3], int((axis[3] - axis[2])*100)).reshape(1, -1),)
    x_new = np.c_[x0.ravel(), x1.ravel()]
    y_predict = model.predict(x_new)
    zz = y_predict.reshape(x0.shape)
    from matplotlib.colors import ListedColormap
    custom_cmap = ListedColormap(['#EF9A9A', '#FFF59D', '#90CAF9'])
    plt.contourf(x0, x1, zz, linewidth=5, cmap=custom_cmap)
plot_decision_boundary(svc, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述
最大化分离超平面与训练数据集的几何间隔gamma(γ)=100时

svc_gamma100 = RBFKernelSVC(gamma=100)
svc_gamma100.fit(x, y)
plot_decision_boundary(svc_gamma100, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述
最大化分离超平面与训练数据集的几何间隔gamma(γ)=10时

svc_gamma10 = RBFKernelSVC(gamma=10)
svc_gamma10.fit(x, y)
plot_decision_boundary(svc_gamma10, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述
最大化分离超平面与训练数据集的几何间隔gamma(γ)=0.1时

svc_gamma01 = RBFKernelSVC(gamma=0.1)
svc_gamma01.fit(x, y)
plot_decision_boundary(svc_gamma01, axis=[-1.5, 2.5, -1.0, 1.5])
plt.scatter(x[y==0, 0], x[y==0, 1])
plt.scatter(x[y==1, 0], x[y==1, 1])
plt.show()

在这里插入图片描述

四、SVM解决回归问题

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
boston = datasets.load_boston()
x = boston.data
y = boston.target
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=888)
from sklearn.svm import SVR
from sklearn.svm import LinearSVR
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
def StandardLinearSVR(epsilon=0.1):
    return Pipeline([
        ('std_scale', StandardScaler()),
        # C, kernel, 等超参需要调节
        ('linear_svr', LinearSVR(epsilon=epsilon))])
svr = StandardLinearSVR()
svr.fit(x_train, y_train)
svr.score(x_test, y_test)

在这里插入图片描述
……


博客刚开,多多包涵,以后会尽量完善的
I’m Ray.I’m ok.

支持向量机(SVM)算法的matlab的实现 支持向量机(SVM)的matlab的实现支持向量机是一种分类算法之一,matlab中也有相应的函数来对其进行求解;下面贴一个小例子,这个例子来源于我们实际的项目。 阅读详情

相关推荐

SVM支持向量机算法

参考资料:http://www.cppblog.com/sunrise/archive/2012/08/06/186474.html                       http://blog.youkuaiyun.com/sunanger_wang/article/details/7887218 我的数据挖掘算法代码:https://github.com/linyiqun/DataMining

走在前往架构师的路上 1万+

逻辑回归( LogisticRegression)和线性支持向量机(LinearSVC)

最近在自学图灵教材《Python机器学习基础教程》,在csdn以博客的形式做些笔记。 线性分类模型 线性模型不仅用于回归问题,也广泛应用于分类问题。我们首先来看二分类。这时可以利用下面的公式进行 预测: ŷ = w[0] * x[0] + w[1] * x[1] + …+ w[p] * x[p] + b > 0 这个公式看起来与线性回归的公式非常相似,但我们没有返回特征的加权求和,而是为预 测设置了阈值0。如果函数值小于 0,我们就预测类别 -1;如果函数值大于 0,我们就预测类别 +1。对

qq_51228515的博客 4680

支持向量机SVM算法应用【Python实现】

支持向量机SVM算法应用【Python实现】 一. 代码实践:调用Python库sklearn实现 1.安装Python和机器学习库,和一些依赖包; 本人是直接安装了包含了众多包的Anaconda3 ,下载后再window7 64bit上双击安装即可; Anaconda3较大,如果网速不好,可以从百度云下载地址:http://pan.baidu.com/s/1dFIfo

江说江湖专栏:欠世界一个伟大的产品! 3548

LinearSVC参数介绍

LinearSVC与SVC的区别 LinearSVC 基于liblinear库实现 有多种惩罚参数和损失函数可供选择 训练集实例数量大(大于1万)时也可以很好地进行归一化 既支持稠密输入矩阵也支持稀疏输入矩阵 多分类问题采用one-vs-rest方法实现 SVC 基于libsvm库实现 训练时间复杂度为 [公式] 训练集实例数量大(大于1万)时很难进行归一化 多分类问题采用one-vs-rest方法实现 2. LinearSVC详细说明 LinearSVC实现了线性分类支持向量机,它是给根据liblin.

VIEO 1万+

支持向量机SVM(Support Vector Machine)算法初解

其实SVM在去年的时候就接触到了,只是一直都属于模模糊糊的状态,最近跟着老板一起上机器学习的课,有种豁然开朗的感觉,于是乘机写下这篇博客。 每个算法都有一个优化的准则,SVM也不例外,他运用的是最大化margin的准则,如图所示:                                                                    这么多的红线都可以将样本

wang_cheng_hei的专栏 2059

基础算法--支持向量机SVM(support vector machine)

SVM算法原理 SVM是什么 低维不可分时,转化为高维划分 SVM推导 决策函数的推导 距离的定义:确信度 上述推导中得到的超平面面只是可以有很多,那么哪个是最佳的超平面呢? 计算每个点到超平面的距离,选择到超平面最近的点,计算这个点到某个超平面A有最大距离,那么这个超平面A就是最佳超平面: 1、min:所有样本点中找到距离超平面最小的样本点 2、max:找到某个超平面A,使最小距离样本点到某个超平面A有最大距离,A就是最佳超平面 ||ω||:L2范数 目标函数推导 增加yi,表示正负

DXdaxian的博客 879

支持向量机(Support Vector Machine,SVM)算法复杂度详解

关于支持向量机的算法复杂度,因为SVM在训练阶段的算法较为复杂,详细的算法复杂度较为难以推算且众说纷纭,与很多因素相关。但是可以根据相应的数据类型大致推算出SVM的算法复杂度。 参考资料: Burges C J C . A Tutorial on Support Vector Machines for Pattern Recognition[J]. Data Mining and Knowle...

祥瑞的技术博客 1万+

【Python机器学习】零基础掌握LinearSVC支持向量机

线性支持向量机(LinearSVC)是一个有效的工具,尤其适用于线性可分的数据集。它可以帮助理解影响某个现象的关键因素,并在一定程度上预测未来的趋势。通过对模型的合理配置和对数据的恰当处理,可以发挥出LinearSVC的最大潜力。在应对复杂或非线性问题时,可能需要更高级的技术或算法。在实际应用中选择正确的模型和参数设置对于达成预期的结果至关重要。优点总结,通过实践案例探索了线性支持向量机(LinearSVC)在解决实际问题中的应用,展示了其作为一个强大的分类器的能力。

Mr数据杨 776

支持向量机(SVM算法)

支持向量机(SVM, support Vector Machines):二分类算法模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机用于解决模式识别领域中的数据分类问题,属于有监督学习算法。支持向量机可以分为线性核非线性两大类。

lili_lak的博客 7235

Python高级算法——支持向量机(Support Vector Machine,SVM)

支持向量机是一种强大的监督学习算法,通过在高维空间中找到最优的超平面实现样本的有效分类。本文详细介绍了SVM的算法原理、核函数、超参数调优、软间隔与硬间隔、优缺点等关键概念,并通过代码示例演示了SVM在鸢尾花数据集上的应用。在实际应用中,根据问题的特点选择合适的核函数和调优参数,能够提高SVM模型的性能,取得更好的分类效果。

Echo_Wish 1742

SVM算法C#编写代码

使用C#编写的SVM算法,低维数据规模,训练效果极佳,可供C++/C编写算法参考。 个人能力有限,如有问题,欢迎指正!

【机器学习】12.十大算法之一支持向量机(SVM - Support Vector Machine)算法原理讲解

支持向量机(SVM)是一种高效的监督学习算法,广泛应用于分类和回归问题。它通过在特征空间中寻找一个最优的超平面来区分不同类别的数据点,目标是最大化两类数据点之间的间隔,从而提高模型的泛化能力。SVM的关键概念包括超平面、间隔、支持向量以及核函数,其中核函数允许SVM处理非线性问题,通过将数据映射到更高维的空间来寻找线性可分的超平面。此外,软间隔和正则化技术用于处理数据的非完全线性可分性,同时控制模型复杂度,防止过拟合。

weixin_50804299的博客 3545

c# winform写的SVM分类器

c#和halcon联合编程写的产品分类程序,需要安装halcon破解包否则会一直提示需要破解。

SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】

SVM 支持向量机算法(Support Vector Machine )【Python机器学习系列(十四)】 1.SVM简介2. SVM 逻辑推导2.1 Part1 化简限制条件2.2 Part2 SVM拉格朗日乘子法求解2.3 Part3 求解超平面3.核函数4. 软间隔支持向量机5. 支持向量回归 SVR6.python实现支持向量机6.1 方法详解6.2 案例展示...

侯小啾技术博客 4596

分享一下如何使用labelimg制作自己的YOLO数据集

首先准备一下自己的下准备一个空文件夹用于保存标签文件,如下图所示。

skywalkerxhx的博客 831

金蝶云星空API实战:从零到一,用Postman打通业务数据流

本文详细介绍了如何使用Postman调试金蝶云星空API,从创建第三方应用到实战调试技巧,帮助开发者快速打通业务数据流。文章重点讲解了API配置的关键细节、常见问题排查方法以及自动化测试方案,提升开发效率与准确性。

weixin_33712987的博客 520

<支持向量机算法(SVM:Support Vector Machine)>——《机器学习算法初识》

机器学习算法初识——支持向量机算法(SVM:Support Vector Machine)

m0_57859086的博客 1752

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 250

支持向量机算法 SVM

支持向量机算法 SVM 是 Support Vector Machine 的缩写,它是工业和学术界都有广泛应用的强大的算法。

kamidox的专栏 3452

Android各个版本存储权限适配

虽然 Android10 上面提出了外部存储分区的概念,不过之前的版本中,我们只要为应用添加了。1、AndroidManifest添加权限设置。3、拒绝权限时跳转详细设置页面。就可以像之前的方式一样访问手机的外部存储空间。2、请求所有文件管理权限。

sig321的专栏 1847

从数字后端角度谈谈occ电路(一)

摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件

芯冰乐 585

算法——支持向量机(support vector machines,SVM)

本文详细介绍了SVM算法,包括算法流程,算法的损失函数和收敛问题,以及许多算法的调优和改进的方法(SMO算法优化,增量式SVM,核函数近似),以及算法的python代码实现。

m0_66890670的博客 2734

PyCharm 配置 Anaconda 环境时找不到 python.exe 的解决办法

通过本文的排查步骤与详细解决方案,你应该能够迅速定位并修复 PyCharm 配置 Anaconda 环境时找不到 python.exe 的问题。确保正确设置环境路径、激活目标环境以及手动指定解释器路径是解决此问题的关键。随着开发工具与包管理器的不断更新,类似的问题可能会出现新的变体。持续关注官方文档、社区讨论和版本更新,可以帮助开发者及时适应新变化,并优化工作流程。希望本文提供的分析和代码示例能为你的开发环境配置带来帮助,让你在 PyCharm 与 Anaconda 的高效协同下,专注于创新与代码实现。

s13596191285的博客 3118

【机器学习】SVM支持向量机算法和实现

实验内容本实验介绍SVM支持向量机原理,并通过三个实验逐步深入的了解如何实现该算法。实验目标通过本实验掌握SVM相关算法原理,了解算法的实现。实验知识点SVM支持向量机原理实验环境预备知识概率论与数理统计Linux命令基本操作Python编程基础SVM的全称是,即支持向量机,主要用于解决模式识别领域中的数据分类问题,属于有监督学习算法的一种。SVM要解决的问题可以用一个经典的二分类问题加以描述。我们以一个红蓝球分类的问题开始SVM的学习。

MAYDAY01520的博客 3289

Rancher入门到精通 - Nginx Ingress 配置指南

Rancher 是一个开源的容器管理平台,它提供了一套完整且易于使用的工具来部署、管理和扩展容器化应用。而 Nginx Ingress 则是一个常用的开源 Ingress 控制器,用于将外部请求流量导入到 Kubernetes 集群中的服务。在开始之前,请确保您已经正确安装了 Rancher 平台和 Nginx Ingress 控制器。

TechInk的博客 1312

嵌入式开发工程师笔试面试指南-Linux驱动

linux驱动

weixin_43491077的博客 474
上一篇: SVM分类
下一篇: 人工智能与机器学习课程设计
Ray_Songaaa
博客等级 码龄7年 27粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值