找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 7374|回复: 2

[求助] "Masked arrays must be 1-D”该错误频繁出现,求大神解答!

1

主题

1

帖子

1

积分

贫民

积分
1
嗜糖如命1314 发表于 2017-3-28 18:42:03 | 显示全部楼层 |阅读模式
详细错误提示:
Traceback (most recent call last):
  File "D:\Nicole's code\test\chapter07\rbfNettest.py", line 52, in <module>
    plotscatter(xMat[:,1],yMat,yHat,plt) # 绘制图形
  File "D:\Nicole's code\test\chapter07\rbfNettest.py", line 21, in plotscatter
    ax.scatter(Xmat,Ymat,c='blue',marker='o')        # 绘制散点图
  File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 1892, in inner
    return func(ax, *args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes\_axes.py", line 3995, in scatter
    cbook.delete_masked_points(*maskargs)
  File "C:\Python27\lib\site-packages\matplotlib\cbook.py", line 1845, in delete_masked_points
    raise ValueError("Masked arrays must be 1-D")
ValueError: Masked arrays must be 1-D


源程序代码:
# -*- coding: utf-8  -*-

from numpy import *
import sys
import os
import matplotlib.pyplot as plt

def loadDataSet(fileName):
    numFeat = len(open(fileName).readline().split('\t')) - 1  
    X= []; Y = []
    fr = open(fileName)
    for line in fr.readlines():
        curLine = line.strip().split('\t')         
        X.append([float(curLine[i]) for i in xrange(numFeat) ])
        Y.append(float(curLine[-1]))
    return X,Y
#绘制图形
def plotscatter(Xmat,Ymat,yHat,plt):
        fig = plt.figure()
        ax = fig.add_subplot(111)  # 绘制图形位置
        ax.scatter(Xmat,Ymat,c='blue',marker='o')        # 绘制散点图
        plt.plot(Xmat,yHat,'r')        # 绘制散点图
        plt.show()

# 数据矩阵,分类标签
xArr,yArr = loadDataSet("nolinear.txt")
# 局部加权线性回归算法:回归线矩阵

# RBF函数的平滑系数
miu= 0.02
k = 0.03

# 数据集坐标数组转换为矩阵
xMat = mat(xArr); yMat = mat(yArr).T
testArr = xArr # 测试数组
m,n = shape(xArr) # xArr的行数
yHat = zeros(m) # yHat是y的预测值,yHat的数据是y的回归线矩阵
for i in xrange(m):
    weights = mat(eye(m))
    for j in xrange(m):                          
        diffMat = testArr[i] - xMat[j,:]
        # 利用高斯核函数计算权重矩阵,计算后的权重是一个对角阵       
        weights[j,j] = exp(diffMat*diffMat.T/(-miu*k**2))
    xTx = xMat.T * (weights * xMat) # 矩阵左乘自身的转置
    if linalg.det(xTx) != 0.0:   
       ws = xTx.I * (xMat.T * (weights * yMat))
       yHat[i] = testArr[i] * ws # 计算回归线坐标矩阵
    else:
       print "This matrix is singular, cannot do inverse"
       sys.exit(0)  # 退出程序

plotscatter(xMat[:,1],yMat,yHat,plt) # 绘制图形

# 计算相关系数:
print corrcoef(yHat,yMat.T)


回复

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
littlecushion 发表于 2017-4-11 16:45:28 | 显示全部楼层
你好~请问这个问题你现在解决了吗?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

2

积分

贫民

积分
2
littlecushion 发表于 2017-4-11 17:43:18 | 显示全部楼层
Matplotlib 画图的话输入参数类型要是array类型的,你把画图输入的变量声明一下就不会报错了~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表