1. 程式人生 > >R語言的二分法和knn演算法

R語言的二分法和knn演算法

trans<- iris[sample(1:nrow(iris),nrow(iris)*0.7,replace = FALSE),]
test<-iris[-sample(1:nrow(iris),nrow(iris)*0.7,replace = FALSE),]
  matrix<-NULL
knn<-function(trans,test,k){
   test_temp<-NULL
   predict_temp<-NULL
  #計算測試元祖到這K個訓練元祖的距離,
  #即用test[i,]與trans的每一列對應的值相減平方
  #訓練元組標號和距離存入優先順序佇列
  for(i in 1:nrow(test)){
    distance = apply(trans[,1:4],1,function(x)sqrt((sum(test[i,1:4]-x)^2)))
    df<-data.frame(trans$Species,distance)
    #按距離遞增順序排序
    newdf<-df[order(df$distance),]
    #選取與當前距離最小的k個點
    #確定K 個點所在類別出現的頻率
     # print(newdf[1:k,1])
    test_temp<-rbind(test_temp,as.character(test[i,5]))
    predict_temp<-rbind(predict_temp,names(which.max(table(newdf[1:k,1]))))
  
  }
    matrix<-cbind( test_temp,predict_temp)
    matrix<-as.data.frame(matrix)
    names(matrix)<- c("primite","predict")
  
   # factor(matrix)
    matrix   
        count<-nrow(matrix)
        Accurany<- nrow(matrix[which(matrix$primite==matrix$predict),])/count
        Accurany
    
}
knn(trans,test,9)

相關推薦

R語言二分knn演算法

trans<- iris[sample(1:nrow(iris),nrow(iris)*0.7,replace = FALSE),] test<-iris[-sample(1:nrow(iris),nrow(iris)*0.7,replace = FALSE),]   matrix<-NUL

基礎演算法之貪心二分及其他演算法思想技巧

基礎演算法學習筆記(三) 1. 貪心法 1.1 簡單貪心 1.2 區間貪心 2. 二分法 2.1 二分查詢 2.2 快速冪 3. two pointers 3.1 什麼是two

求平方根(根號n)的兩種演算法——二分牛頓迭代

面試阿里口碑的時候遇到了這個問題,這裡做個筆記1.二分法#define eps 0.00001 float SqrtByDichotomy(float n) { if (n < 0) { return -1.0; } else { float low,

c語言二分切割牛頓求根演算法

c語言實現的二分法,切割法,牛頓法求根演算法 //二分法 double fun(double m,double n) { double r;int i=0; if (ques

kd樹knn演算法的c語言實現

本文轉載自http://www.cnblogs.com/LCcnblogs/p/6169136.html 樓主正在學習機器學習演算法,歡迎學習交流。 #include<stdio.h> #include<stdlib.h> #include<

Flow construction SGU - 176 有源匯有上下界最小流 二分回流

iostream cor pre ios back max text col 變量存儲 /** 題目:Flow construction SGU - 176 鏈接:https://vjudge.net/problem/SGU-176 題意: 有源匯有上下界的最小流。 給

C語言二分查找數列中指定數字

進入 簡單 vmw 結果 div pre 查看 fin span 在公茂果老師的課件中,出現的好多具體的算法例子,這裏,跟蹤給出,二分法查找的指定數字的代碼: 實現環境:VMware下的Ubuntu 17.4 編譯環境:自帶編譯器。 下面給出Ubuntu下,編譯環境的操

R語言學習路徑感受

第一次接觸R語言是我讀研的時候,算到現在有5年多了。R語言可以算得上是我進入程式設計世界的啟蒙語言,儘管在大學期間為了考試而被迫學習過計算機二級,但那真心是沒有一丁點的興趣可言。進入R的世界後,真的越來越喜歡,可以幫助我解決學術研究過程中的很多探索,最起碼讀研期間的所有小論文和畢業論文的案例分析都

K-means演算法KNN演算法

github: 智慧演算法的課件和參考資料以及實驗程式碼   K-means是最為常用的聚類演算法,該演算法是將相似的樣本歸置在一起的一種無監督演算法。採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。 演算法主要步驟可描述如下: &nb

二分迭代求e^x+10*x-2=0方程的解

主要運用迴圈while #include<stdio.h> #include<math.h> double erfenfa() {double a=1,b=0,c; while(fabs(a-b)>=5e-4) {c=(a+b)/2.0; if((exp(

R語言的安裝使用

R語言是一種為統計計算和圖形顯示而設計的語言環境。是貝爾實驗室(Bell Laboratory)的Rick Becker、John Chambers和Allan Wilks開發的S語言的一種實現,提供了一系列統計和圖形顯示工具。 R語言是面向物件的一種程式語言,是一套開源的資料分析解決方案,由一個龐大並且活

兩種方法對浮點數求根號(二分牛頓)

二分法和牛頓法求根號是面試中的經典題,如果沒提前接觸過,經典題將成為經典難題。我先上程式碼,後面再對程式碼進行解釋: #include<iostream> #include<string> #define PRECISION 0.0002 using

順序表應用6:有序順序表查詢(利用了二分來提高演算法效率)

順序表應用6:有序順序表查詢 Time Limit: 1000 ms Memory Limit: 4096 KiB Problem Description 順序表內按照由小到大的次序存放著n個互不相同的整數,任意輸入一個整數,判斷該整數在順序表中是否存在。如果在順序

聊聊我的R語言學習路徑感受

作者:劉順祥 個人微信公眾號:每天進步一點點2015 第一次接觸R語言是我讀研的時候,算到現在有5年多了。R語言可以算得上是我進入程式設計世界的啟蒙語言,儘管在大學期間為了考試而被迫學習過計算機二級,但那真心是沒有一丁點的興趣可言。進入R的世界後,真的越來越喜歡,可以

Kmeans、Kmeans++KNN演算法比較

K-Means介紹 K-means演算法是聚類分析中使用最廣泛的演算法之一。它把n個物件根據他們的屬性分為k個聚類以便使得所獲得的聚類滿足:同一聚類中的物件相似度較高;而不同聚類中的物件相似度較小。其聚類過程可以用下圖表示: 如圖所示,資料樣本用圓點表示,每個簇的中心

C語言字串加密解密演算法

在本例項中要求設計一個加密和解密演算法。在對一個指定的字串加密之後,利用解密函式能夠對密文解密,顯示明文資訊。加密的方式是將字串中每個字元加上它在字串中的位置和一個偏移值 5。以字串“mrsoft”為例,第一個字元“m”在字串中的位置為 0,那麼它對應的密文是“‘m’+0+5",即 r。

R語言wilcoxon秩檢驗及wilcoxon符號秩檢驗

說明 wilcoxon秩和及wilcoxon符號秩檢驗是對原假設的非引數檢驗,在不需要假設兩個樣本空間都為正態分佈的情況下,測試它們的分佈是否完全相同。 操作 #利用mtcars資料 library(stats) data("mtcars") b

K-近鄰KNN演算法

1、kNN演算法(K 最近鄰(k-Nearest Neighbors))描述 簡單地說,k-近鄰演算法採用測量不同特徵值之間的距離方法進行分類。 k-近鄰演算法是一種基本分類與迴歸方法;它是是監督學習中分類方法的一種,屬於懶散學習法(惰性學習方法)。 給定一個訓練集

一個數開根號的二分牛頓

偶然在知乎上看到求解一個數開根號怎麼求,閒來無事練習下C;首先自己想到的就是二分法,寫出來了才知道這個叫二分法,是一個比較直觀的方法,比如求in的開根號,設定一個low,一個high,每次用low和high 的中值的平方去和in比較,在誤差範圍之內就退出,誤差大就繼續迭代,然

方程求根(二分牛頓迭代

一、實驗內容 以方程:x3-0.2x2-0.2x-1.2=0為例,編寫程式求方程的根 編寫二分法、迭代法、牛頓法程式,分析執行結果 二、程式碼(python) import matplotlib.pyplot as plt #計算原函式值 de