python - 在python中从头开始实现马氏距离
问题描述
我正在从头开始实施马氏距离,但发生了错误。马氏距离的公式是- 我在下面提供错误的代码-
from math import*
from decimal import Decimal
import numpy as np
def mahalanobis(x, y, cov=None):
x_mean = np.mean(x)
y_mean = np.mean(y)
y_minus_mn = y - y_mean
x_minus_mn_with_transpose =np.transpose(x- x_mean)
Covariance = covar(x, y)
inv_covmat = np.linalg.inv(Covariance)
x_minus_mn = x - x_mean
D_square = np.dot( x_minus_mn_with_transpose, inv_covmat, x_minus_mn)
return D_square
def covar(x, y):
x_mean = np.mean(x)
y_mean = np.mean(y)
Cov_numerator = sum(((a - x_mean)*(b - y_mean)) for a, b in zip(x, y))
Cov_denomerator = len(x) - 1
Covariance = (Cov_numerator / Cov_denomerator)
return Covariance
import pandas as pd
filepath = 'https://raw.githubusercontent.com/selva86/datasets/master/diamonds.csv'
df = pd.read_csv(filepath).iloc[:, [0,4,6]]
df.head()
X = df[['carat', 'depth', 'price']].head(500).values.tolist
Y =df[['carat', 'depth', 'price']].values.tolist
mahalanobis(X, Y)
请帮忙。有没有人可以检查和更正我的代码
解决方案
X = df[['carat', 'depth', 'price']].head(500).values.tolist
Y =df[['carat', 'depth', 'price']].values.tolist
.tolist
是功能。我认为你需要:
.tolist()
推荐阅读
- javascript - 如何通过 JSON 数组中的 Loop 方法检查元素
- xml - 如何使用 PowerShell 在一个元素中获取整个节点?
- python - 如何根据另一列值迭代pandas DataFrame多索引和过滤
- git - 如何删除超出容量限制的文件
- javascript - 在 Windows 上运行 forever.js 时出错 - “'C:\Program' 未被识别为内部或外部命令、可运行程序或批处理文件”
- flutter-web - How to build flutter web app in debug mode?
- java - 片段中的按钮 onClick 中的 NullPointerException
- android - WorkManager - 当我们同时使用默认初始化和自定义初始化时,我们是否应该删除默认初始化程序?
- c++ - 默认/样板代码在 Visual Studio 2017 中给我错误。E1574。虚幻。但是构建成功
- mysql - MySQL 事件——执行需要 EVENT 权限?