R机器学习之一:kNN算法案例
来源:互联网 发布:围棋人工智能程序 编辑:程序博客网 时间:2024/06/05 20:45
kNN算法优劣
优点:
高度无偏且不需要对数据作任何假设。简单有效易于实现
缺点:
由于没有涉及抽象过程,kNN实际上并没有创建一个模型,预测时间较长
case study:检测前列腺癌
Step 1 :
100个观测10个变量,其中8个数值变量,一个类别变量,一个ID:
1,Radius
2,Texture
3,Perimeter
4,Area
5,Smoothness
6,Compactness
7,Symmetry
8,Fractal dimension
Step 2 :数据准备
setwd('D:\\f\\机器学习\\AnalyticsVidhya\\kNN in R')prc=read.csv("D:\\f\\机器学习\\AnalyticsVidhya\\kNN in R\\Prostate_Cancer.csv")> head(prc) id diagnosis_result radius texture perimeter area smoothness compactness symmetry1 1 M 23 12 151 954 0.143 0.278 0.2422 2 B 9 13 133 1326 0.143 0.079 0.1813 3 M 21 27 130 1203 0.125 0.160 0.2074 4 M 14 16 78 386 0.070 0.284 0.2605 5 M 9 19 135 1297 0.141 0.133 0.1816 6 B 25 25 83 477 0.128 0.170 0.209 fractal_dimension1 0.0792 0.0573 0.0604 0.0975 0.0596 0.076prc=prc[-1]#ID列没有用##数据集包括被诊断为恶性和良性的病人table(prc$diagnosis_result)prc$diagnosis <- factor(prc$diagnosis_result, levels = c("B", "M"), labels = c("Benign", "Malignant"))round(prop.table(table(prc$diagnosis)) * 100, digits = 1) normalize <- function(x) { return ((x - min(x)) / (max(x) - min(x))) }prc_n <- as.data.frame(lapply(prc[2:9], normalize))#对数值变量标准化prc_train <- prc_n[1:65,]prc_test <- prc_n[66:100,]prc_train_labels <- prc[1:65, 1]prc_test_labels <- prc[66:100, 1]#训练模型install.packages("class")library(class)##用knn()函数分类测试数据,k选为样本个数开方prc_test_pred <- knn(train = prc_train, test = prc_test,cl = prc_train_labels, k=10)##模型评估install.packages("gmodels")library(gmodels)CrossTable(x=prc_test_labels,y=prc_test_pred,prop.chisq = FALSE)> CrossTable(x=prc_test_labels,y=prc_test_pred,prop.chisq = FALSE) Cell Contents|-------------------------|| N || N / Row Total || N / Col Total || N / Table Total ||-------------------------|Total Observations in Table: 35 | prc_test_pred prc_test_labels | B | M | Row Total | ----------------|-----------|-----------|-----------| B | 7 | 12 | 19 | | 0.368 | 0.632 | 0.543 | | 1.000 | 0.429 | | | 0.200 | 0.343 | | ----------------|-----------|-----------|-----------| M | 0 | 16 | 16 | | 0.000 | 1.000 | 0.457 | | 0.000 | 0.571 | | | 0.000 | 0.457 | | ----------------|-----------|-----------|-----------| Column Total | 7 | 28 | 35 | | 0.200 | 0.800 | | ----------------|-----------|-----------|-----------|#14个FP#模型准确度为(TN+TP)/35=60% 有待改善##########模型改进##尝试改变k值!!
参考文献
http://www.analyticsvidhya.com/blog/2015/08/learning-concept-knn-algorithms-programming/
0 0
- R机器学习之一:kNN算法案例
- 机器学习--k-近邻(kNN)算法案例
- 机器学习之一——kNN算法
- 机器学习算法的R语言实现(一):KNN
- R机器学习算法系列——KNN
- 用R语言DIY机器学习算法--KNN
- 【机器学习实战之一】:C++实现K-近邻算法KNN
- 机器学习算法之一:5分钟上手KNN
- 《机器学习》 KNN算法
- 机器学习:KNN算法
- 机器学习-KNN 算法
- 【机器学习】kNN算法
- 机器学习 -- kNN算法
- 机器学习---kNN算法
- 机器学习--kNN算法
- 机器学习--KNN算法
- 机器学习算法-kNN
- 机器学习knn算法
- iOS开发之控制器View的创建
- 机器学习相关学习资料
- AMS 深入了解(一、进程管理)(and5.1)
- 第十三周 项目5-拓扑排序算法验证
- CURL PHP
- R机器学习之一:kNN算法案例
- 第八周项目1-建立顺序串的算法库
- 第十三周项目3—Dijkstra算法的验证
- 自定义Cordova插件—SweetAlertDialogPlugin
- 初步探究ES6之序章
- 对系统学习与写博客的看法——学完《第一行代码》有感
- Android-App Widgets
- 谈谈:服务器返回的数据,该怎么接收(int,NSNumber)
- Toad For DB2 5.1的配置