用python计算相关性

用python计算相关性,python,correlation,Python,Correlation,我试图计算相关性,但平均值和最小值都没有。我试图修复它,但找不到错误。我是python的初学者,知道的不多。你们能帮帮我吗 这是我的密码 import math import random def myAverage(lst): sum(lst)/len(lst) def myStandardDev(lst): devitation=[(x - sum(lst)/len(lst) )**2 for x in lst] standarddev=sum(devitation)/(len(ls

我试图计算相关性,但平均值和最小值都没有。我试图修复它,但找不到错误。我是python的初学者,知道的不多。你们能帮帮我吗 这是我的密码

import math
import random

def myAverage(lst):
 sum(lst)/len(lst)
def myStandardDev(lst):
 devitation=[(x - sum(lst)/len(lst) )**2 for x in lst]
 standarddev=sum(devitation)/(len(lst)-1)
 return math.sqrt(standarddev)
def myMin(lst):
min(lst)
def myCorrelation(x,y):
value=1
for i in range(len(x)):
    equation1=(x[i]-(sum(x)/len(x)))/math.sqrt((x[i]-sum(x)/len(x))**2)
    equation2=(y[i]-(sum(y)/len(y)))/math.sqrt((y[i]-sum(y)/len(y))**2)
    value=value*equation1*equation2
return value
def main():
aList=[11,20,30,50,80,90,101,15,125,128,150,185,200,240,260,290]
bList=[14,25,28,45,79,85,121,115,125,256,160,195,230,270,280,330]
cList=bList.copy()
cList.reverse()
dList= [random.randint(1,99) for x in range(len(aList))]
print("Lists:")
print("List A = " + str(aList))
print("List B = " + str(bList))
print("List C = " + str(cList))
print("List D = " + str(dList))
print()
print("List A Average = " + str(myAverage(aList)))
print("Standart Deviation of List A = " + str(myStandardDev(aList)))
print("Minimum of List A = " + str(myMin(aList)))
print()
print("List B Average = " + str(myAverage(aList)))
print("Standart Deviation of List B = " + str(myStandardDev(aList)))
print("Minimum of List B = " + str(myMin(aList)))
print()
print("Correlation of List A and B = " + str(myCorrelation(aList, bList)))
print("Correlation of List A and C = " + str(myCorrelation(aList, cList)))
print("Correlation of List A and D = " + str(myCorrelation(aList, dList)))

main()

在Python中,如果省略
return
关键字,默认情况下将返回
None
。看起来您需要更改
myAverage
myMin
函数以显式返回它们计算的值,即:

def myAverage(lst):
    return sum(lst)/len(lst)

def myMin(lst):
    return min(lst)

在Python中,如果省略
return
关键字,默认情况下将返回
None
。看起来您需要更改
myAverage
myMin
函数以显式返回它们计算的值,即:

def myAverage(lst):
    return sum(lst)/len(lst)

def myMin(lst):
    return min(lst)

您的代码无法工作,因为它没有正确缩进。开始书写时,请选择缩进(2个空格、4个空格、8个空格、1个制表符),不要使用其他缩进。我为您修复了代码:

#/usr/bin/env python
#通过在文件浏览器(至少在Linux上)中双击python脚本,可以执行上面这行代码
输入数学
随机输入
#不要在变量名中省略一个字母,您的代码不会
#要短得多,它只会降低可读性
#祝你好运:
#变量名->变量名
#objectNumber->objNum
#MainWindow->MainWin
# 
#糟糕的缩写:
#列表->lst
#元素->elmnt
#窗口->wndw
# 
#函数/方法名称应该用1到5个单词来描述它们的功能
#好的函数/方法名称:
#计算平均值/计算平均值
#平均值
#获取平均值/获取平均值
# 
#错误的函数/方法名称:
#我的平均值是多少
#我的平均数
#myFunction是最差的,因为它完全没有说明它的功能!
def平均值(列表):
#始终在运算符(+、-、=、=、和其他运算符)的每侧各放一个空格,在每个逗号后放一个空格。
#它使代码更具可读性
返回金额(列表)/长度(列表)
#始终在两个函数/方法/类之间放置一条自由线
def标准开发(列表):
偏差=[(x-总和(列表)/len(列表))**2表示列表中的x]
标准偏差=总和(偏差)/(长度(列表)-1)
返回math.sqrt(standarddev)
#省略下面的方法,直接使用min(list)
#def myMin(列表):
#返回最小值(列表)
def相关性(x,y):
值=1
对于范围内的i(len(x)):
等式1=(x[i]-(和(x)/len(x))/math.sqrt((x[i]-和(x)/len(x))**2)
方程2=(y[i]-(sum(y)/len(y))/math.sqrt((y[i]-sum(y)/len(y))**2)
值=值*等式1*等式2
返回值
def main():
listA=[11,20,30,50,80,90,101,15,125,128,150,185,200,240,260,290]
listB=[14、25、28、45、79、85、121、115、125、256、160、195、230、270、280、330]
listC=bList.copy()
listC.reverse()
listD=[random.randint(1,99)表示范围内的x(len(listA))]
打印(“列表:”)
打印(“列表A=“+str(列表A))
打印(“列表B=“+str(列表B))
打印(“列表C=“+str(列表C))
打印(“列表D=“+str(列表D))
打印()
打印(“列出平均值=“+str(平均值(列表A)))
打印(“列表A的标准偏差=”+str(标准偏差(alistA)))
打印(“列表A的最小值=”+str(最小值(列表A))
打印()
打印(“列表B平均值=“+str(平均值(列表A)))
打印(“列表B的标准偏差=“+str(标准偏差(列表A)))
打印(“列表B的最小值=”+str(最小值(列表A)))
打印()
打印(“列表A和B的相关性=“+str(相关性(列表A、列表B)))
打印(“列表A和C的相关性=“+str(相关性(列表A、列表C)))
打印(“列表A和D的相关性=“+str(相关性(列表A,列表D)))
#如果程序直接运行,而不是在
#该程序由另一个程序导入。
如果名称=“\uuuuu main\uuuuuuuu”:
main()

您的代码无法工作,因为它没有正确缩进。开始编写时,请选择缩进(2个空格、4个空格、8个空格、1个制表符),不要使用其他缩进。我为您修复了代码:

!/usr/bin/env python
#通过在文件浏览器(至少在Linux上)中双击python脚本,可以执行上面这行代码
输入数学
随机输入
#不要在变量名中省略一个字母,您的代码不会
#要短得多,它只会降低可读性
#祝你好运:
#变量名->变量名
#objectNumber->objNum
#MainWindow->MainWin
# 
#糟糕的缩写:
#列表->lst
#元素->elmnt
#窗口->wndw
# 
#函数/方法名称应该用1到5个单词来描述它们的功能
#好的函数/方法名称:
#计算平均值/计算平均值
#平均值
#获取平均值/获取平均值
# 
#错误的函数/方法名称:
#我的平均值是多少
#我的平均数
#myFunction是最差的,因为它完全没有说明它的功能!
def平均值(列表):
#始终在运算符(+、-、=、=、和其他运算符)的每侧各放一个空格,在每个逗号后放一个空格。
#它使代码更具可读性
返回金额(列表)/长度(列表)
#始终在两个函数/方法/类之间放置一条自由线
def标准开发(列表):
偏差=[(x-总和(列表)/len(列表))**2表示列表中的x]
标准偏差=总和(偏差)/(长度(列表)-1)
返回math.sqrt(standarddev)
#省略下面的方法,直接使用min(list)
#def myMin(列表):
#返回最小值(列表)
def相关性(x,y):
值=1
对于范围内的i(len(x)):
等式1=(x[i]-(和(x)/len(x))/math.sqrt((x[i]-和(x)/len(x))**2)
方程2=(y[i]-(sum(y)/len(y))/math.sqrt((y[i]-sum(y)/len(y))**2)
值=值*等式1*等式2
返回值
def main():
listA=[11,20,30,50,80,90,101,15,125,128,150,185,200,240,260,290]
listB=[14、25、28、45、79、85、121、115、125、256、160、195、230、270、280、330]
listC=bList.copy()
listC.reverse()
listD=[random.randint(