本文共 3802 字,大约阅读时间需要 12 分钟。
使用gonum.org/v1/gonum包下的库函数可以对向量和矩阵进行操作 当进行计算的向量维度大且使用的函数较多时,使用gonum.org/v1/gonum/matmat包下的apply函数操作矩阵时,可以让用户自定以函数进行操作//Apply()函数可以让用户自定义任何函数 来操作矩阵h := mat.NewDense(0, 0, nil)// 定义平方根函数sqrt := func(_, _ int, v float64) float64 { return math.Sqrt(v) }h.Apply(sqrt, verctorA)fh := mat.Formatted(h, mat.Prefix(" "))fmt.Printf("矩阵A的开平方 %0.4v\n\n", fh)mat包下可以求矩阵的转置、行列式、特征值、向量求解等等 详细看API手册 github.com/gonum
isirsFlie, err := os.Open("D:/gocode/iris.csv") if err != nil { log.Panic(err) } defer isirsFlie.Close()
irisDF := dataframe.ReadCSV(isirsFlie)// 获取数据的长度specialLength := irisDF.Col("sepal_length").Float()// 求平均数mealVal := stat.Mean(specialLength, nil)// 众数modeVal, modeCOunt := stat.Mode(specialLength, nil)// 中位数// mediaVla, err :=fmt.Printf("平均数是 %0.2f\n", mealVal)fmt.Printf("众数是 %0.2f\n", modeVal)fmt.Printf("一共是 %d\n", int(modeCOunt))
irsiFile, err := os.Open("D:/gocode/iris.csv")if err != nil { log.Panic(err)}defer irsiFile.Close()irisDF := dataframe.ReadCSV(irsiFile)sepaLength := irisDF.Col("sepal_length").Float()// 最小值 、最大值minVal := floats.Min(sepaLength)maxVal := floats.Max(sepaLength)// 极差rangeVal := maxVal - minVal// 方差varianceVal := stat.Variance(sepaLength, nil)// 标准差stdVal := stat.StdDev(sepaLength, nil)// 分位数inds := make([]int, len(sepaLength))floats.Argsort(sepaLength, inds)quan25 := stat.Quantile(0.25, stat.Empirical, sepaLength, nil)quan50 := stat.Quantile(0.50, stat.Empirical, sepaLength, nil)quan75 := stat.Quantile(0.75, stat.Empirical, sepaLength, nil)fmt.Printf("Min : %0.2f\n", minVal)fmt.Printf("Max : %0.2f\n", maxVal)fmt.Printf("RangeVla : %0.2f\n", rangeVal)fmt.Printf("variance: %0.2f\n", varianceVal)fmt.Printf("Std : %0.2f\n", stdVal)fmt.Printf("0.25 : %0.2f\n", quan25)fmt.Printf("0.50 : %0.2f\n", quan50)fmt.Printf("0.75 : %0.2f\n", quan75)使用的第三方包是gonum.org/v1/gonum/stat或者是github.com/montanaflynn/stats
isirsFlie, err := os.Open("D:/gocode/iris.csv") if err != nil { log.Panic(err) } defer isirsFlie.Close()
irisDF := dataframe.ReadCSV(isirsFlie)// 创建直方图for _, colName := range irisDF.Names() { if colName != "species" { // 没有就填充 v := make(plotter.Values, irisDF.Nrow()) for i, floatVal := range irisDF.Col(colName).Float() { v[i] = floatVal } p, err := plot.New() if err != nil { log.Panic(err) } p.Title.Text = fmt.Sprintf("Histog of a %s ", colName) h, err := plotter.NewHist(v, 16) if err != nil { log.Panic(err) } h.Normalize(1) p.Add(h) if err := p.Save(4*vg.Inch, 4*vg.Inch, colName+"_hist.png"); err != nil { log.Panic(err) } }}
isirsFlie, err := os.Open("D:/gocode/iris.csv")if err != nil { log.Panic(err)}defer isirsFlie.Close()irisDF := dataframe.ReadCSV(isirsFlie)p, err := plot.New()if err != nil { log.Fatal(err)}p.Title.Text = "箱图"p.Y.Label.Text = "Values"w := vg.Points(20)for idx, colName := range irisDF.Names() { if colName != "species" { v := make(plotter.Values, irisDF.Nrow()) for i, floatVal := range irisDF.Col(colName).Float() { v[i] = floatVal } b, err := plotter.NewBoxPlot(w, float64(idx), v) if err != nil { log.Fatal(err) } p.Add(b) }}p.NominalX("sepal_length", "sepal_width", "petal_length", "petal_width")if err := p.Save(6*vg.Inch, 8*vg.Inch, "boxsplot.png"); err != nil { log.Fatal(err)}
oberverd := []float64{260.0, 135.0, 105.0} totalObserved := 500.0 expected := []float64{totalObserved * 0.60, totalObserved * 0.25, totalObserved * 0.15}
chiQuare := stat.ChiSquare(oberverd, expected)fmt.Printf("\nchi-chiQuare : %0.2f \n", chiQuare)chiDist := distuv.ChiSquared{ K: 2.0, Src: nil,}pValue := chiDist.Prob(chiQuare)fmt.Printf("p-value :%0.4f\n", pValue)
转载地址:http://dgydi.baihongyu.com/