机器学习基础——sklearn之多项回归

使用 Python 和 scikit-learn 学习回归算法 回归是指要预测的特征包含连续值。回归是指通过分析其他自变量之间的关系来预测因变量的过程。有几种已知的算法可以帮助提升这些关系以更好地预测值。在本教程中,我们提供了回归算法的高级概述,并展示了如何使用 scikit-learn 库实现这些算法。我们还使用 matplot lib 来可视化一些结果。 阅读详情

利用sklearn里的函数对多项式进行拟合
第一幅图是数据图
第二幅图是用一元线性回归拟合的图
第三幅图是用多项式回归拟合出来的

import numpy as np 
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression # 线性回归
from numpy import genfromtxt
from sklearn.preprocessing import PolynomialFeatures # 生成多项式

# 载入数据
data = genfromtxt(r"C:\\ML\\chapter-1\\job.csv",delimiter=",")
x_data = data[1:,1]
y_data = data[1:,2]
plt.scatter(x_data,y_data)
plt.show()

x_data = data[1:,1,np.newaxis] # 给数据加上维度
y_data = data[1:,2,np.newaxis]

# 创建并拟合模型  一元线性回归
model = LinearRegression()
model.fit(x_data,y_data)

# 画图
# 使用直线来拟合曲线,有对比性
plt.plot(x_data,y_data,'b.') # b代表blue .表示用.画出来
plt.plot(x_data,model.predict(x_data),'r') # 画线,r代表red
plt.show()

# 定义多项式回归,degree的值可以调节多项式的特征
poly_reg = PolynomialFeatures(degree=5)
# 特征处理
x_poly = poly_reg.fit_transform(x_data)
# 定义回归模型
lin_reg = LinearRegression()
# 训练模型
lin_reg.fit(x_poly,y_data)

# print(x_poly)
# 结果如下(当degree=1):
# [[ 1.  1.]
#  [ 1.  2.]
#  [ 1.  3.]
#  [ 1.  4.]
#  [ 1.  5.]
#  [ 1.  6.]
#  [ 1.  7.]
#  [ 1.  8.]
#  [ 1.  9.]
#  [ 1. 10.]]

# 结果如下(degree=2):
# [[  1.   1.   1.]
#  [  1.   2.   4.]
#  [  1.   3.   9.]
#  [  1.   4.  16.]
#  [  1.   5.  25.]
#  [  1.   6.  36.]
#  [  1.   7.  49.]
#  [  1.   8.  64.]
#  [  1.   9.  81.]
#  [  1.  10. 100.]]

# 画图
plt.plot(x_data,y_data,'b.')
plt.plot(x_data,lin_reg.predict(poly_reg.fit_transform(x_data)), c='r')
plt.title('Truth or Bluff (Polynomial Regression)') # 标题
plt.xlabel('Position level') # X坐标
plt.ylabel('Salary') # Y坐标
plt.show()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

【skLearn 回归模型】多项式回归 PolynomialFeatures 文章目录一、多项式对数据的处理① 一维数据集简单案例 ---- (维度针对特征数而言)② 多维数据集案例 ---- (维度针对特征数而言)♦ 二维测试♦ 三维测试③ 多项式回归处理非线性问题④ 可视化二、多项式回归的可解释性 一、多项式对数据的处理 除了分箱之外,另一种更普遍的用于解决"线性回归只能处理线性数据"问题的手段,就是使用多项式回归对线性回归进行改进。这样的手法是机器学习研究者们从支持向量机中获得的:支持向量机通过升维可以将非线可分数据转化为线性可分,然后使用核函数在低维空间中进行计算,这是.. 阅读详情

相关推荐

【Python-ML】SKlearn库多项式回归

# -*- coding: utf-8 -*- ''' Created on 2018年1月24日 @author: Jason.F @summary: 有监督回归学习-多项式回归,通过多项式特征拟合非线性关系 ''' import pandas as pd import numpy as np import time import matplotlib.pyplot as plt from sk

医疗影像检索 1632

sklearn实现多元线性回归 【Python机器学习系列(七)】

sklearn实现多元线性回归 【Python机器学习系列(七)】

侯小啾技术博客 7580

Sklearn多种模型的学习曲线拟合特性与运行速度

在本文中,我们将介绍如何使用sklearn来绘制多种模型的学习曲线,并探讨拟合特性与运行速度之间的关系。学习曲线展示了随着训练样本数量的增加,模型在训练集和交叉验证集上的得分变化情况。综上所述,sklearn提供了方便易用的函数和工具来绘制多种模型的学习曲线。通过分析学习曲线,我们可以评估模型的拟合特性,并了解模型的运行速度。通常情况下,决策树模型的训练速度是最快的,逻辑回归模型次之,而支持向量机模型的训练速度相对较慢。在绘制学习曲线之前,我们需要定义一个绘制学习曲线的函数,并使用不同的模型进行拟合。

YOLOv3333的博客 359

sklearn实现多项式回归

1)生成数据集 import numpy as np import matplotlib.pyplot as plt n_train, n_test, true_w, true_b = 100, 100, [1.2, -3.4, 5.6], 5 # X = np.linspace(-3,3,n_train+n_test) X = np.random.normal(size=(n_train...

qq_39071488的博客 1533

人工智能基础_机器学习035_多项式回归升维实战2_使用sklearn的PolynomialFeatures进行升维---人工智能工作笔记0075

X=X.reshape(-1,1) #数据就是二维数据,机器学习,算法要求 这之前已经说过了,是把数据改成二维数据,np.randoe.randn(100),因为没有写成np.random.randn(100,1)会因为广播机制,变成100行100列的数据,用这个X=X.reshape(-1,1) 以后就会变成100行1列的数据.3的0次方 * 2的0次方 = 1 3的零次方*2的一次方 = 2 3的一次方*2的零次方=3 3的一次方*2的一次方=6 这里面不包括自己对吧。

添柴程序猿的专栏 1007

[Python从零到壹] 十二.机器学习之回归分析万字总结全网首发(线性回归、多项式回归、逻辑回归)

前一篇文章讲述了数据分析部分,主要普及网络数据分析的基本概念,讲述数据分析流程和相关技术,同时详细讲解Python提供的若干第三方数据分析库,包括Numpy、Pandas、Matplotlib、Sklearn等。本文介绍回归模型的原理知识,包括线性回归、多项式回归和逻辑回归,并详细介绍Python Sklearn机器学习库的LinearRegression和LogisticRegression算法及回归分析实例。进入基础文章,希望对您有所帮助。

杨秀璋的专栏 5万+

多元线性回归(sklearn实现)

首先我们先看数据集以及我们要解决的问题 数据集如下: 要解决的是分析priceUSB与其他因素的关系,做出关系式,也就是Y为priceUSD,X分别为其他5个因素,做出多元线性回归方程。 ①分析下每个因素和Y的关系(这一步就是只是看个开心而已其实) def display_lr(): pd_data=pd.read_csv('eth.csv')#原始数表 #画出单因素...

Samzhu 3万+

【心得】Back trader避坑指南(一)——关于安装过程的问题

我认为一开始比较容易卡住的地方,主要是安装上面的问题。我给大家整理的这个版本是我能跑通的版本,还有一些好用的神器,手把手教你怎么装!

weixin_38347757的博客 1303

机器学习sklearn多元线性回归

from __future__ import print_function from sklearn import datasets from sklearn.linear_model import LinearRegression import matplotlib.pyplot as plt loaded_data = datasets.load_boston() data_X

钱佳佳的博客 4037

【编译原理】龙书第三章作业答案

【编译原理】龙书第三章作业答案 练习3.1.1:根据3.1.2节中的讨论,将下面的C++程序划分成正确的词素序列。哪些词素应该有相关联的词法值?应该具有什么值? 答案: 左列为词素,右列为值,划分如下: < float> 值为它本身 <id,limitedSquare> 值为*limitedSquare指针 <(> 标点符号无值 ...

作业报告杂物间 2万+

VCSA 6.7证书更新全流程指南:从故障诊断到完整替换

本文详细介绍了VCSA 6.7证书更新的全流程,包括故障诊断、证书替换操作步骤及常见问题解决方案。通过使用官方脚本和证书管理器,帮助管理员快速解决证书过期问题,确保vCenter系统的稳定运行。特别强调了STS证书修复和全量证书重置的关键步骤,适用于vcsa6.7环境下的证书管理需求。

weixin_42634811的博客 450

【集成学习】(task2)各类回归问题建模&原理

学习总结 (1) 文章目录学习总结1.导论1.1 回归1.2 分类1.3 无监督学习2. 使用sklearn构建完整的机器学习项目流程2.1 使用sklearn构建完整的回归项目2.2 使用sklearn构建完整的分类项目3.结语 1.导论 什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个样本,我们用xix_ixi​来表示一个样本,其中i=1,2,3,...,Ni=1,2,3,...,Ni=1,2

发现问题,并解决问题,批判性思维 1305

使用基于python的neurora进行表征相似性分析(RSA)

发现了一款用于表征分析的Python API,还是挺方便的,这里简单介绍一下进行表征相似性分析的使用方法。

zjh12312311的博客 2766

决策边界 逻辑回归中的多项式特征 多分类问题

决策边界 逻辑回归中的多项式特征 多分类问题

qq_45906101的博客 777

实战避坑:基恩士KV8000 PLC与C#上位机链路通讯全流程实现(含ST代码+上位机源码)

本文详细讲解了基恩士KV8000 PLC与C#上位机的TCP链路通讯实现,从PLC端的ST代码编写、通讯配置,到上位机的通讯类封装、界面实现,再到实战避坑和性能优化,提供了完整的可复用方案。该方案已在实际产线项目中验证,支持实时数据采集和控制指令下发,稳定性和可靠性满足工业场景需求。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1179

DeepSeek与YOLO融合技术的微信小程序实现方案

本文介绍了一个基于微信小程序和Flask后端的智能图像检测系统。系统采用DeepSeek-7B进行自然语言理解,YOLOv8执行目标检测,并通过融合验证模块确保结果准确性。核心流程包括:用户通过小程序上传图片和文本需求,后端解析意图后执行目标检测,最后验证并返回结果。关键技术包括DeepSeek的指令理解、动态阈值调整和模型优化(ONNX、TensorRT)。系统适用于工业质检等场景,如"检测表面划痕",能自动识别目标并验证结果。部署需GPU服务器,并包含安全机制保障系统稳定运行。

老郑的博客 275

Task02:回归问题

文章目录机器学习基础回归分类无监督学习使用sklearn构建完整的机器学习项目流程回归线性回归模型 机器学习基础 回归 回归:因变量是连续型变量,如:房价,体重等。 常用数据集:boston(波士顿房价是一个连续型变量) sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有: data:特征X的矩阵(ndarray) target:因变量的向量(ndarray) feature_names:特征名称(ndarray) 使用: from sklearn import datase

qq_45160226的博客 540

【DRAM存储器二】Sense Amplifier

详述DRAM颗粒中感应放大器功能、电路结构、工作原理和操作波形

highman110的博客 7205

机器学习基础模型回顾

1 导论 1.1 什么是机器学习? ​ 机器学习的一个重要目标就是利用数学模型来理解数据,发现数据中的规律,用作数据分析和预测。 1.1.1 数据? ​ 数据通常由一组向量组成,这组向量中的每一个向量都是一个样本,我们用xix_{i}xi​来表示一个样本,其中i=1,2,3...Ni = 1,2,3...Ni=1,2,3...N,共NNN个样本。每个样本xi=(xi1,xi2...xip,yi)x_{i} = \left ( x_{i1},x_{i2}...x_{ip},y_{i} \right )xi

CuCu的博客 320

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

机器学习 -- 已完成笔记汇总

KNN算法(共12节): 机器学习 -- KNN算法(Ⅰ 初步认识KNN) 机器学习 -- KNN算法(Ⅱ 肿瘤预测案例) 机器学习 -- KNN算法(Ⅲ 肿瘤预测案例 -- 封装成函数) 机器学习 -- KNN算法(Ⅳ 使用sklearn中的kNN) 机器学习 -- KNN算法(Ⅴ 构建属于自己的KNN分类器) 机器学习 -- KNN算法(Ⅵ 数据集的拆分) 机器学习 -- KNN...

Leo的博客 2469

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

机器学习入门(七):多项式回归, PolynomialFeatures详解

写在前面 在机器学习入门(六)中,已经通过pipeline快速使用了多项式回归。代码如下: nonLinearRegr = Pipeline([ ('poly',PolynomialFeatures(degree=2)), ('clf',LinearRegression()) ]) nonLinearRegr.fit(X, y) 这个方式省略了很多......

OldDriver1995的博客 3万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【机器学习】多项式回归sklearn实现

使用sklearn框架实现多项式回归。使用框架更方便,可以少写很多代码。 使用一个简单的数据集来模拟,只有几条数据。 代码 如果不用框架,需要自己手动对数据添加高阶项,有了框架就方便多了。sklearn 使用 Pipeline 函数简化这部分预处理过程。 当 PolynomialFeatures 中的degree=1时,效果和使用 LinearRegression 相同,得到的是一个线性模型,...

thothsun 的博客 1万+

sklearn实现多项式线性回归_一元/多元 【Python机器学习系列(八)】

sklearn实现多项式线性回归_一元/多元 【Python机器学习系列(八)】1. 多项式一元回归2. 多项式多元回归

侯小啾技术博客 3372

机器学习sklearn-多项式回归

目录 线性关系 线性模型和非线性模型 利用线性回归解决非线性问题 多项式回归 线性模型 线性关系 首先,”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量之间的线性关系(linear relationship)”,它表示两个变量之间的关系可以展示为一条直线,即可以使用方程来进行拟合。要探索两个变量之间的关系是否是线性的,最简单的方式就是绘制散点图,如果散点图能够相对均匀地分布在一条直线的两端,则说明这两个变量之间的关系是线性的。 因此,三角函数,高次函数,指数函

kongqing23的博客 5207
上一篇: 机器学习算法基础——sklearn求二元线性回归
下一篇: 机器学习基础——标准方程法
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值