博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go语言机器学习-矩阵-概率伦-统计学
阅读量:4034 次
发布时间:2019-05-24

本文共 3802 字,大约阅读时间需要 12 分钟。

2.1矩阵与向量

使用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

2.2分布与统计

1.集中趋势测量法:测量大部分数据所在的位置 1.均值 2.中位数、 3.众数

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))

2.离中趋势测量法:测量在分布范围内数值是如何分布的(从小到大)

1.极大值 2.极小值 3.极差 4.方差 5.标准差 6.分位数/四分位数

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

2.3数据的可视化

1.直方图(gonum.org/v1/plot) plot包中的函数需要用到image包中函数 直接手动下载即可

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)		}	}}

2.箱型图

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)}

2.4概率伦 自学 卡方检验的代码

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/

你可能感兴趣的文章
SpringMVC学习笔记
查看>>
springMVC如何接收前端传递的数组数据
查看>>
查看当前占用端口、关闭当前端口所暂用的进程
查看>>
Eclipse中有用的快捷键
查看>>
mysql将表字段信息拼接转换成实体类中的属性书写格式
查看>>
有return的情况下try catch finally的执行顺序
查看>>
input文本框中value值有双引号的问题
查看>>
java多线程简介
查看>>
web.xml配置加载顺序
查看>>
ServletContextListener使用详解
查看>>
UrlRewriteFilter使用说明
查看>>
java对redis的基本操作
查看>>
Java Math的 floor,round和ceil的使用
查看>>
通过url方式传递中文乱码解决办法
查看>>
Java的初始化机制、垃圾回收机制和内存分配机制
查看>>
MySQL5.6安装步骤(windows7/8_64位)
查看>>
FreeMarker基础配置
查看>>
Java中使用Jedis操作Redis
查看>>
Redis中常用命令
查看>>
spring下载
查看>>