1. 程式人生 > 其它 >r k-means 分類結果_別再自己看電泳結果了!通過R語言進行影象識別分類

r k-means 分類結果_別再自己看電泳結果了!通過R語言進行影象識別分類

技術標籤:r k-means 分類結果

本文靈感來源於一篇人像識別的博文

https://blog.csdn.net/weixin_43786013/article/details/90266409

文章把彩色的人像圖片做了RGB格式向灰度圖片的轉換以及SVD分解,利用了線性迴歸最小殘差法、logistic 迴歸、最短歐幾里德距離法進行人臉識別性別判定。

彩色圖片是高維陣列,而且圖片的畫素和比例也多種多樣,因此在計算中容易出現過擬合以及處理器難以計算的情況。

但是,實驗室內用於分子標記鑑定的電泳結果圖具有畫素穩定,比例穩定,結果簡單(純合子與雜合子)的特點,因此應用R語言對圖片進行結果分析和簡單應該不難。

ced3ab8b704f1d012241c97bad3342c0.png

我們要做到的事:

1,讀取圖片

2,將圖片轉化為計算機語言可用的二維陣列(電泳膠圖是黑白色圖)

3,合併圖片並
4,訓練模型並對測試集分類

下面我們來看一下程式碼。

library(imager)#匯入影象編輯包library(e1071)#匯入SVM包#寫一個可以完成讀入並整理圖片格式的函式ImageImportfunction(path="./"){ListOfFileNamelist.files(path)ResultNULL    for(i in ListOfFileName) {FileNameInPath"")ImageLoadedImageLoaded10L,size_y=                     size_z = 10L, size_c = 10L)ImageLoadedas.        ImageLoaded 1, mult(dim(ImageLoaded)))        ifelse(!is.null(Result),               Result     }    return(Result)}Electronic1"某一種膠形的圖片路徑")Electronic2"另一種膠形的圖片路徑")(sam.count0.8,nrow(Electronic2)*# [1] 348TrainE11:nrow(Electronic1),sam.count,replace=F)TrainE21:nrow(Electronic2),sam.count,replace=F)ImageDataToScore1,length(TrainE1)),rep(           probablity = T, cross = 3,           type = "C-classification", method = "SVM")E1yuce E1yuce as.numeric(prop.table(table(E1yuce))#獲得對膠圖1的打分矩陣E2yuceE2yuceas.numeric(prop.table(table(E2yuce))#獲得對膠圖2的打分矩陣

雖然要先把每個條帶都區分出了再分類有點脫了褲子放屁的嫌疑,但總歸是研究室民工的一小步嘛,反正我們的信條是:能讓電腦幹,絕不自己幹。2ee9fc74d3b073c9a0f57e908780f8bc.png