2016-01-26 44 views
2

我在golearn示例文件夾中玩弄了knnclassifier_iris.go示例。我用我自己的一個替換了虹膜數據集,並且只要我根據讀取的某些百分比的數據訓練我的數據,所有函數都可以正常工作,並獲得一些輸出。但是,當我清楚地提到訓練和測試數據集,然後在擬合訓練數據集後對測試數據集進行預測時,當我嘗試打印預測時,我得到的結果爲零。我不知道爲什麼我會得到一個零值,所以我會很感激一些幫助。在golearn中使用.Predict()函數時獲取<nil>

我的代碼:

package main 

import (
    "fmt" 
    "github.com/sjwhitworth/golearn/base" 
    "github.com/sjwhitworth/golearn/evaluation" 
    "github.com/sjwhitworth/golearn/knn" 
) 

func main() { 
    trainData, err := base.ParseCSVToInstances("~/Desktop/churn_train.csv", true) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(trainData) 
    testData, err := base.ParseCSVToInstances("~/Desktop/churn_test.csv", false) 
    if err != nil { 
     panic(err) 
    } 
    fmt.Println(trainData) 
    fmt.Println(testData) 

    //Initialises a new KNN classifier 
    cls := knn.NewKnnClassifier("euclidean", 2) 
    cls.Fit(trainData) 

//Calculates the Euclidean distance and returns the most popular label 
    predictions := cls.Predict(testData) 
    fmt.Println(predictions) //GETTING <NIL> AS OUTPUT 

    // Prints precision/recall metrics 
    confusionMat, err := evaluation.GetConfusionMatrix(testData, predictions) 
    if err != nil { 
     panic(fmt.Sprintf("Unable to get confusion matrix: %s", err.Error())) //ERROR CAUSED HERE DUE TO GETTING <NIL> 
    } 
    fmt.Println(evaluation.GetSummary(confusionMat)) 

} 

回答

0

(以防萬一任何人的過這個偶然在谷歌)。當第二個ParseCSVToInstances產生與第一個微妙不同的實例時,問題就會出現。爲了確保這不是問題,使用ParseCSVToTemplatedInstances,所以

testData, err := base.ParseCSVToInstances("~/Desktop/churn_test.csv", false) 

成爲

testData, err := base.ParseCSVToTemplatedInstances("~/Desktop/churn_test.csv", false, trainData) 
相關問題