机器学习05

机器学习算法

在这里插入图片描述

机器学习的流程

在这里插入图片描述

分类算法—k-近邻算法

根据“距离”找邻居

求距离
在这里插入图片描述
在此之前需要对数据进行标准化处理

API
在这里插入图片描述

csv文件数据

row_id,X,Y,place_id
0,2.1554,4.2528,54412121
1,6.0325,5.1214,54412121
2,5.3487,2.0135,20123145
2,5.3487,2.0135,20123145
2,5.3487,2.0135,20123145
3,6.2415,6.5238,30442554
4,9.1545,4.2526,95545151
5,3.1214,2.3512,54562411
5,3.1214,2.3512,54562411
5,3.1214,2.3512,54562411
6,3.1415,3.0201,21545254
7,4.2025,3.2211,12454154
7,4.2025,3.2211,12454154
8,7.1212,2.3026,45515124
9,8.1401,7.1214,66124512
10,8.1401,7.1214,66124512
11,8.1401,7.1214,66124512
12,8.1401,7.1214,66124512
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
import pandas as pd
def KNsuanfa():
    # k-近邻算法预测
    #读取数据
    data=pd.read_csv("wom.csv")
    print(data)
    #处理数据
    #缩小数据
    # print(data.query("X<5.21&X>2.66&Y>2.66&Y<5.21"))
    #构造特征 data["特征名"]=... 数据量要匹配
    # place_count=data.groupby("place_id").count()
    # print(place_count)
    # tf=place_count[place_count.row_id<2].reset_index()
    # print(tf)
    # data=data[data["place_id"].isin(tf.place_id)]
    # print(data)
    print('*'*100)
    #取出data里面的特征值和目标值
    y=data["place_id"]
    x=data.drop(["place_id"],axis=1)  #按列删除
    #进行数据的分割  训练集和测试集
    x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)
    print(x_train)
    print(x_test)
    print("*"*50)
    print(y_train)
    print(y_test)
    #特征工程——标准化
    std=StandardScaler()
    x_train=std.fit_transform(x_train)
    x_test=std.transform(x_test)

    #进行算法流程
    Knn=KNeighborsClassifier(n_neighbors=5)
    #输入数据
    Knn.fit(x_train,y_train)
    #进行预测
    y_predict=Knn.predict(x_test)
    print("预测的位置为:",y_predict)
    print("预测的准确率:",Knn.score(x_test,y_test))



    return None

KNsuanfa()

运行结果:

   row_id       X       Y  place_id
0        0  2.1554  4.2528  54412121
1        1  6.0325  5.1214  54412121
2        2  5.3487  2.0135  20123145
3        2  5.3487  2.0135  20123145
4        2  5.3487  2.0135  20123145
5        3  6.2415  6.5238  30442554
6        4  9.1545  4.2526  95545151
7        5  3.1214  2.3512  54562411
8        5  3.1214  2.3512  54562411
9        5  3.1214  2.3512  54562411
10       6  3.1415  3.0201  21545254
11       7  4.2025  3.2211  12454154
12       7  4.2025  3.2211  12454154
13       8  7.1212  2.3026  45515124
14       9  8.1401  7.1214  66124512
15      10  8.1401  7.1214  66124512
16      11  8.1401  7.1214  66124512
17      12  8.1401  7.1214  66124512
****************************************************************************************************
    row_id       X       Y
3        2  5.3487  2.0135
16      11  8.1401  7.1214
17      12  8.1401  7.1214
10       6  3.1415  3.0201
13       8  7.1212  2.3026
11       7  4.2025  3.2211
6        4  9.1545  4.2526
2        2  5.3487  2.0135
1        1  6.0325  5.1214
12       7  4.2025  3.2211
4        2  5.3487  2.0135
5        3  6.2415  6.5238
0        0  2.1554  4.2528
    row_id       X       Y
15      10  8.1401  7.1214
7        5  3.1214  2.3512
14       9  8.1401  7.1214
8        5  3.1214  2.3512
9        5  3.1214  2.3512
**************************************************
3     20123145
16    66124512
17    66124512
10    21545254
13    45515124
11    12454154
6     95545151
2     20123145
1     54412121
12    12454154
4     20123145
5     30442554
0     54412121
Name: place_id, dtype: int64
15    66124512
7     54562411
14    66124512
8     54562411
9     54562411
Name: place_id, dtype: int64
预测的位置为: [66124512 12454154 66124512 12454154 12454154]
预测的准确率: 0.4

Process finished with exit code 0

在这里插入图片描述

总结

1.先进行获取数据

2.进行数据的处理

3.取出特征值和目标值

4.将数据分成训练集和测试集

5.将训练集进行输入

6.将测试集数据输入,进行对测试集数据的预测

7.准确率就是由预测的数据和实际的测试集数据进行比较

朴素贝叶斯算法原理

概率基础
在这里插入图片描述
贝叶斯公式
在这里插入图片描述
在这里插入图片描述

若出现某个特征在一种类别下为0导致整个概率为0(断定他不属于此类别显然不合理)所以我使用拉普拉斯平滑系数

在这里插入图片描述
API:
在这里插入图片描述
拉普拉斯平滑系数
在这里插入图片描述
防止分类时概率出现为0的情况

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值