IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 金融数据分析与挖掘实战5.6-5.7 -> 正文阅读

[人工智能]金融数据分析与挖掘实战5.6-5.7

# 5.6 支持向量机
#汽车评价数据,6个特征变量,1个分类标签,共1728条记录
#要求取1690条记录作为训练集,余下的作为测试集,计算预测准确率
import numpy as np
import pandas as pd
import os
os.chdir("C:\\Users\\Administrator\\Desktop")  #更改工作路径,注意双\\ 任何操作前可以先将常用包和路径先设置好
# 1.读取数据
data = pd.read_excel("car.xlsx")
datah = data.head(6)  # 展示前6行
print(datah)   
   a1  a2  a3  a4  a5  a6  d
0   4   4   2   2   3   2  3
1   4   4   2   2   3   3  3
2   4   4   2   2   3   1  3
3   4   4   2   2   2   2  3
4   4   4   2   2   2   3  3
5   4   4   2   2   2   1  3
# 2. 变量选择(因变量和自变量)与数据集划分(训练集和测试集)
x = data.iloc[:1690,:6].values # 训练集自变量
y = data.iloc[:1690,6].values  # 训练集因变量
x1= data.iloc[1691:,:6].values # 测试集自变量
y1= data.iloc[1691:,6].values  # 测试集因变量
# 3.支持向量机分类模型构建
# 导入支持向量机的模块
from sklearn import svm
# 创建支持向量机分类器
clf = svm.SVC(kernel='rbf')  # 核函数的选择,linear 、poly、rbf、sigmoid分别表示线性、多项式、高斯、s核函数
# 用fit来拟合数据
clf.fit(x, y) 
# 考查模型的训练效果
rv=clf.score(x, y)  # 训练集的准确率
# 用训练集学习到的规律应用到测试集上进行预测
R=clf.predict(x1)
# 计算预测值与真实值之间的偏差
Z=R - y1
# 计算预测正确的比例
Rs=len(Z[Z==0])/len(Z)
# 输出预测结果及准确率
print('预测结果为:',R)
print('预测准确率为:',Rs)
预测结果为: [4 3 1 1 3 1 4 3 1 4 3 3 3 3 3 3 3 3 3 3 3 1 3 1 4 3 1 4 3 3 1 3 1 4 3 1 4]
预测准确率为: 0.7027027027027027
# 5.7 K均值聚类
# K表示类别数,选取K个初始类中心,计算每个样本到每个类中心的距离,样本离哪个类别最近就聚到这一类
# 然后重新计算每个类的中心,重新将每个样本按照距离最近原则再进行归类
# 重复上述过程,一直到类别不发生变化为止
# 定义K均值聚类的函数
def K_mean(data,knum):
    #输入:data--聚类特征数据集,要求为数据结构要求为numpy数值数组
    #输入:knum--聚类个数
    #返回值,data后面加一列类别,显示类别
    import pandas as pd
    import numpy as np
    p=len(data[0,:])                  #聚类数据维度
    cluscenter=np.zeros((knum,p))     #定预定义元素为全0的初始聚类中心
    lastcluscenter=np.zeros((knum,p)) #定预定义元素为全0的旧聚类中心
    #初始聚类中心和旧聚类中心初始化,取数据的前knum行作为初始值
    for i in range(knum):
      cluscenter[i,:]=data[i,:]
      lastcluscenter[i,:]=data[i,:]
    #预定义聚类类别一维数组,用于存放每次计算样本的所属类别
    clusindex=np.zeros((len(data)))
    while 1:
        for i in range(len(data)):
              #计算第i个样本到各个聚类中心的欧式距离
              #预定义sumsquare,用于存放第i个样本到各个聚类中心的欧式距离
              sumsquare=np.zeros((knum))
              for k in range(knum):
                  sumsquare[k]=sum((data[i,:]-cluscenter[k,:])**2)
              sumsquare=np.sqrt(sumsquare)
              #第i个样本到各个聚类中心的欧式距离进行升序排序
              s=pd.Series(sumsquare).sort_values()
              #判断第i个样本的类归属(距离最小,即s序列中第0个位置的index)
              clusindex[i]=s.index[0]
        #将聚类结果添加到聚类数据最后一列
        clusdata=np.hstack((data,clusindex.reshape((len(data),1))))
        #更新聚类中心,新的聚类中心为对应类别样本特征的均值
        for i in range(knum):
              cluscenter[i,:]=np.mean(clusdata[clusdata[:,p]==i,:-1],0).reshape(1,p)
        #新的聚类中心与旧的聚类中心相减
        t=abs(lastcluscenter-cluscenter)
        #如果新的聚类中心与旧的聚类中心一致,即聚类中心不发生变化,
#返回聚类结果,并退出循环
        if sum(sum(t))==0:    
            return clusdata
            break
        #如果更新的聚类中心与旧的聚类中心不一致,
#将更新的聚类中心赋给旧的聚类中心,进入下一次循环
        else:
            for k in range(knum):
                lastcluscenter[k,:]=cluscenter[k,:]  

# 调用函数进行运算
D=pd.read_excel('D.xlsx',header=None)
D=D.values
r=K_mean(D,2)
x0=r[r[:,2]==0,0]
y0=r[r[:,2]==0,1]
x1=r[r[:,2]==1,0]
y1=r[r[:,2]==1,1]
import matplotlib.pyplot as plt
plt.plot(x0,y0,'r*')  
plt.plot(x1,y1,'bo')  
[<matplotlib.lines.Line2D at 0x23d6cf71760>]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PwWjOiyA-1651217914699)(output_5_1.png)]

# 上述例子是自己写K均值聚类函数,并调用。Python中本身包含K均值聚类模块,可直接运用
# 案例:利用31个地区农村居民人均可支配收入进行聚类分析
data=pd.read_excel('农村居民人均可支配收入来源2016.xlsx') # 读取数据
X=data.iloc[:,1:]    # 选择聚类变量
from sklearn.preprocessing import StandardScaler   #导入标准化的包
scaler = StandardScaler()
scaler.fit(X) 
X=scaler.transform(X)    # 数据标准化处理
from sklearn.cluster import KMeans   # 导入K均值聚类包
model = KMeans(n_clusters = 4, random_state=0, max_iter = 500) # 参数分别表示聚类数,初始状态,最大迭代次数
model.fit(X) 
c=model.labels_  # 获取对象中的label属性
Fs=pd.Series(c,index=data['地区'])
Fs=Fs.sort_values(ascending=True)  # 按聚类数升序排列
print(Fs)
地区
新疆     0
云南     0
山东     0
西藏     0
福建     0
黑龙江    0
海南     0
辽宁     0
内蒙古    0
河北     0
吉林     0
浙江     1
天津     1
江苏     1
甘肃     2
重庆     2
陕西     2
青海     2
贵州     2
四川     2
河南     2
广东     2
湖南     2
湖北     2
宁夏     2
江西     2
安徽     2
山西     2
广西     2
上海     3
北京     3
dtype: int32

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 15:44:16  更:2022-05-01 15:46:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:25:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码