2024-06-16 14:15:55 发布
网友
有没有任何方法可以自动识别数据框中通常不包含在模型构建中的列,如账号、员工账号、交易账号等类型的列? 请注意,同一员工在不同日期可能有多个记录。简而言之,当无用的列不是唯一的时,如何识别它们?在
有几种方法可以识别数据集中租赁重要的列/类/特性。相关性就是其中之一。按照下面的示例,首先从Kaggle下载thismovies数据集。在
df = pd.read_csv("tmdb_5000_movies.csv") df = df[["id", "budget", "popularity", "vote_average"]] df.head()
以下是数据帧的外观:
我们正在寻找一种自动检测“id”是无用列的方法。在
让我们找出每列与另一列之间的相关性:
corr_df = pd.DataFrame(columns=list(df.columns)) for col_from in df.columns: for col_to in df.columns: corr_df.loc[col_from, col_to] = df[col_from].corr(df[col_to]) print(corr_df.head())
相关性只是-1和1之间的一个度量,接近零的数字表示这两个类是不相关的,离零越远(即使在负方向上)表明这两个参数在某种意义上是耦合的。 观察id与budget和popularity之间的相关性如何非常小
id
budget
popularity
id budget popularity vote_average id 1 -0.0893767 0.031202 -0.270595 budget -0.0893767 1 0.505414 0.0931457 popularity 0.031202 0.505414 1 0.273952 vote_average -0.270595 0.0931457 0.273952 1
让我们更进一步,求出绝对值并求出所有相关性的总和,相关性得分最小的类被认为是最没有用处的:
corr_df = corr_df.abs() corr_df["sum"] = corr_df.sum(axis=0) - 1 print(corr_df.head())
结果:
id budget popularity vote_average sum id 1 0.0893767 0.031202 0.270595 0.391173 budget 0.0893767 1 0.505414 0.0931457 0.687936 popularity 0.031202 0.505414 1 0.273952 0.810568 vote_average 0.270595 0.0931457 0.273952 1 0.637692
并不是说这种方法有很多问题,例如:如果id从0增加到N,并且行之间有一个值也以恒定速率增加,那么它们的相关性将很高;此外,某些列X可能会产生比Y之间的相关性更小的与列Y之间的相关性尽管如此,绝对和结果在大多数情况下已经足够好了。在
有几种方法可以识别数据集中租赁重要的列/类/特性。相关性就是其中之一。按照下面的示例,首先从Kaggle下载thismovies数据集。在
以下是数据帧的外观:
^{pr2}$我们正在寻找一种自动检测“id”是无用列的方法。在
让我们找出每列与另一列之间的相关性:
相关性只是-1和1之间的一个度量,接近零的数字表示这两个类是不相关的,离零越远(即使在负方向上)表明这两个参数在某种意义上是耦合的。 观察
id
与budget
和popularity
之间的相关性如何非常小让我们更进一步,求出绝对值并求出所有相关性的总和,相关性得分最小的类被认为是最没有用处的:
结果:
并不是说这种方法有很多问题,例如:如果id从0增加到N,并且行之间有一个值也以恒定速率增加,那么它们的相关性将很高;此外,某些列X可能会产生比Y之间的相关性更小的与列Y之间的相关性尽管如此,绝对和结果在大多数情况下已经足够好了。在
相关问题 更多 >
编程相关推荐