机器学习之k近邻算法和朴素贝叶斯

1400-张同学

发表文章数:34

热门标签

, ,
首页 » 算法 » 正文

相似的样本,特征之间的值相近
!欧式距离,需要进行标准化处理
实例:预测入住位置

from sklearn.neighbors import KNeighborsClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.feature_extraction.text import TfidfVectorizer

特征值:row_id, x_y坐标,准确性,时间,
目标值:place_id
分类问题

xy缩小

我们用到dataframe.query

data = pd.read_csv("./data/FBlocation/train.csv")

    # print(data.head(10))

    # 处理数据
    # 缩小数据,查询数据晒讯
 data = data.query("x > 1.0 &  x < 1.25 & y > 2.5 & y < 2.75")

时间戳处理格式变化

# 处理时间的数据
    time_value = pd.to_datetime(data['time'], unit='s')

    print(time_value)

    # 把日期格式转换成 字典格式
    time_value = pd.DatetimeIndex(time_value)

    # 构造一些特征
    data['day'] = time_value.day
    data['hour'] = time_value.hour
    data['weekday'] = time_value.weekday

    # 把时间戳特征删除
    data = data.drop(['time'], axis=1)

    print(data)

少于指定人数的目标位置删除

place_count = data.groupby('place_id').count()
tf = place_count[place_count.row_id > 3].reset_index()
data = data[data['place_id'].isin(tf.place_id)]
 # 取出数据当中的特征值和目标值
    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)

特征工程

  特征工程(标准化)
    std = StandardScaler()

    # 对测试集和训练集的特征值进行标准化
    x_train = std.fit_transform(x_train)

    x_test = std.transform(x_test)

算法流程和预测结果,准确率

发现准确率不高,可以修正特征工程,或者drop row-id

    # 进行算法流程 # 超参数
    knn = KNeighborsClassifier()

    # # fit, predict,score
    knn.fit(x_train, y_train)
    # # 得出预测结果
     y_predict = knn.predict(x_test) 
   
    # # 得出准确率
     print("预测的准确率:", knn.score(x_test, y_test))
   

k值的影响

k值取得小:受异常点影响
k值取得大:容易受数量波动

调参

knn = KNeighborsClassifier(n_neighbors=5) 超参数

朴素贝叶斯算法

概率
训练集误差大的话,结果肯定不好,不需要调参
假设了词语之间的独立关系,会对结果造成干扰

拉普拉斯平滑

指定系数一般为1,分子分母同时加一

精确率precision和召回率recall

estimator
混淆矩阵 真正例 伪反例
F1score 反映模型稳健性
sklearn.metrics.classification_report()

##模型选择与调优
1.交叉验证
训练集分为两部分,训练集和验证集
机器学习之k近邻算法和朴素贝叶斯

2.网格搜索

手动指定——超参数
每组超参数都用交叉验证来评估
sklearn.model_selection.GridSearchCV
estimator估计器
param_grid 估计器参数
cv交叉验证

best_score_
best_estinator_
cv_results_

未经允许不得转载:作者:1400-张同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《机器学习之k近邻算法和朴素贝叶斯》 发布于2020-12-10

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录