我不确定我的代码出了什么问题。。(线性/多项式回归)

2024-04-26 01:12:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集(csv文件),有三个独立的列。第0列为信号时间,第1列为频率,第2列为强度。数据中存在大量噪声,可以通过查找每个信号频率的方差对其进行排序。如果是<;那么这是正确的频率。因此,这将是我想要计算线性/多元回归的数据。p、 我必须手动计算线性:(。我的嵌套for循环决策结构当前不起作用。任何解决方案都会有帮助!谢谢

data = csv.reader(file1)
sort = sorted(data, key=(operator.itemgetter(1))) #sorted by the frequencies
for row in sort:
x.append(float(row[0]))
y.append(float(row[2]))
frequencies.append(float(row[1]))

for i in range(499) : 
freq_dict.update({ frequencies[i] : [x[i], y[i]] })

for key in freq_dict.items(): 
   for row in sort : 
       if key == float(row[1]):
           a.append(float(row[1]))
           b.append(float(row[2]))
           c.append(float(row[0]))
       else :
           num = np.var(a)
           if num < 2332.0: 
               linearRegression(c, b, linear)
               print('yo')
               polyRegression(c, b, d, linear, py)
               mplot.plot(linear, py)
           else: 
               a = [] 
               b = [] 
               c = []

偏差2332或更少是我需要的频率

偏差2332或更少是我需要的频率

我使用了499的范围,因为这是我数据集的长度。此外,如果频率不正确,我尝试清除列表(a、b、c)


1条回答
网友
1楼 · 发布于 2024-04-26 01:12:57

一个更类似的解决方案是使用列表的corrcoef。但类似的风格如下:

for key, value in freq_dict.items(): #1487
for row in sort:   #when row -> goes to a new freq it calculates corrcoef of an empty list.
    if key == float(row[1]): #1487
        a.append(float(row[2]))
        b.append(float(row[0])) 
    elif key != float(row[1]): 
        if a: 
            num = np.corrcoef(b, a)[0,1]
            if (num < somenumber).any(): 
                do stuff
        a = [] #clear the lists and reset number
        b = [] 
        num = 0

相关问题 更多 >