【发布时间】:2019-09-23 00:45:36
【问题描述】:
我正在尝试将数据集划分为不确定且确定的值。我为此目的制作了不同的函数,但是当我调用该函数以使值不确定时,某个值也发生了变化。这是它的样子:
我阅读了一些已回答的问题,他们说我需要复制我的列表,我这样做了,但问题仍然存在。
def loadCertainDataset(a, b, dataset=[], dataset1=[], trainCe=[], testCe=[]):
temp=dataset[:]
temp1=dataset1[:]
for x in range(0,a):
for y in range(4):
temp[x][y]=float(temp[x][y])
trainCe.append(temp[x])
for x in range(0,b):
for y in range(4):
temp1[x][y]=float(temp1[x][y])
testCe.append(temp1[x])
def loadUncertainDataset(a,b,dataset=[],dataset1=[],trainUn=[],testUn=[]):
temp=dataset[:]
temp1=dataset1[:]
c=0
for x in range(a,len(dataset)):
for y in range(4):
d=float(temp[c][y])
temp[c][y]=uniformProb(5,d,5)
trainUn.append(temp[c])
c+=1
c=0
for x in range(b,len(temp1)):
for y in range(4):
d=float(temp1[c][y])
temp1[c][y]=uniformProb(5,d,5)
testUn.append(temp1[c])
c+=1
def loadDataset(filename, split, trainingSet=[] , testSet=[]):
with open(filename, 'rb') as csvfile:
lines = csv.reader(csvfile)
dataset = list(lines)
for x in range(len(dataset)-1):
for y in range(4):
dataset[x][y] = float(dataset[x][y])
if random.random() < split:
trainingSet.append(dataset[x])
else:
testSet.append(dataset[x])
def main():
trainingSet=[]
trainCe=[]
testSet=[]
testCe=[]
split = 0.67
# loading dataset
loadDataset('iris.data', split, trainingSet, testSet)
n=len(trainingSet)/2
m=len(testSet)/2
#split first half for certain dataset
loadCertainDataset(n,m,trainingSet,testSet,trainCe,testCe)
trainUn=[]
testUn=[]
#other half for uncertain dataset
loadUncertainDataset(n,m,trainingSet,testSet,trainUn,testCe
print(testCe)
main()
我希望 print(testCe) 的输出为二维数组
> [6.2, 3.4, 5.4, 2.3, 'Iris-virginica']
但我得到的是3维数组
> [array([9.6913696 , 9.36996183, 7.5334876 , 6.80333322, 7.3538702 ]),
> array([5.32638532, 7.3171699 , 4.49632398, 3.86691709, 7.90622172]),
> array([6.89951614, 7.58021047, 7.5585632 , 8.85561941, 5.47507325]),
> array([5.3910737 , 5.0039284 , 1.97381302, 6.51333703, 4.07850765]),
> 'Iris-versicolor'], [array([ 6.85037363, 7.67665646, 8.09445476,
> 6.24119721, 10.67032386]), array([4.46818369, 7.66358385, 4.24088535, 6.71903264, 7.6154301 ]), array([7.1805261 , 8.75463451, 8.98668969, 9.24723654, 4.85404661]), array([4.58140956, 1.5211153 , 3.72896749, 4.63736249, 4.26095836]), 'Iris-versicolor']
3维数组应该是不确定的数据集,但testCe应该是确定的(2维数组)。当我不打电话时
> loadUncertainDataset(...)
print(testCe) 将返回二维数组。请帮忙。
【问题讨论】:
标签: python python-2.7