Python UMAP Error TypeError:需要类似字节的对象,而不是';列表';
我正在尝试运行一个代码,该代码基于以下工作利用UMAP进行降维: 我正在Spyder(Python 3.7)上运行。我得到这个错误:Python UMAP Error TypeError:需要类似字节的对象,而不是';列表';,python,pandas,runumap,Python,Pandas,Runumap,我正在尝试运行一个代码,该代码基于以下工作利用UMAP进行降维: 我正在Spyder(Python 3.7)上运行。我得到这个错误: TypeError:需要类似字节的对象,而不是“列表” 这是我的代码: import numpy as np from sklearn.datasets import load_iris, load_digits from sklearn.model_selection import train_test_split import matplotlib.pyplo
TypeError:需要类似字节的对象,而不是“列表”
这是我的代码:
import numpy as np
from sklearn.datasets import load_iris, load_digits
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import umap.umap_ as umap
# import umap
from sklearn.preprocessing import StandardScaler
from matplotlib import patches
#data = pd.read_csv('/Users/chrisweber/Documents/Walsh Lab/UMAP.csv')
data = pd.read_csv('/Users/Elizabeth/Desktop/UMAPtest.csv')
# Uncomment one section or the other
################################### SECTION 1 - UMAP ###################################################################
reducer = umap.UMAP()
endpoints = data[ ['RR', 'na1', 'fa1', 'nt1', 'ft1', 'nt2', 'ft2'] ].values
scaled_endpoints = StandardScaler().fit_transform(endpoints)
embedding = reducer.fit_transform(scaled_endpoints)
plt.scatter(
embedding[:, 0],
embedding[:, 1],
c=[sns.color_palette()[x] for x in data.Identifier.map({0:0, 1:1})])
plt.gca().set_aspect('equal', 'datalim')
plt.title('UMAP Projection by Identifier', fontsize=24)
blue = patches.Patch(color='steelblue', label='0')
orange = patches.Patch(color='orange', label='1')
plt.legend(handles=[blue, orange])
########################################################################################################################
################################### SECTION 2 - Pairplot ###############################################################
# sns.pairplot(data, hue='Identifier')
# plt.subplots_adjust(.05, .05, .95, .95)
# plt.suptitle('Endpoint Analysis by Identifier')
########################################################################################################################
plt.show()
将numpy作为np导入
从sklearn.dataset导入load_iris,load_数字
从sklearn.model\u选择导入列车\u测试\u拆分
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
作为pd进口熊猫
将umap.umap作为umap导入
#导入umap
从sklearn.preprocessing导入StandardScaler
从matplotlib导入修补程序
#data=pd.read_csv('/Users/chrisweber/Documents/Walsh Lab/UMAP.csv'))
data=pd.read_csv(“/Users/Elizabeth/Desktop/UMAPtest.csv”)
#取消对一节或另一节的注释
###################################第1节-UMAP###################################################################
reducer=umap.umap()
端点=数据['RR','na1','fa1','nt1','ft1','nt2','ft2']]
缩放的_端点=标准缩放器()。拟合_变换(端点)
嵌入=缩减器。拟合变换(缩放的端点)
plt.散射(
嵌入[:,0],
嵌入[:,1],
c=[sns.color_palete()[x]表示data.Identifier.map({0:0,1:1})中的x)
plt.gca().set_aspect('equal','datalim'))
plt.title('按标识符的UMAP投影',fontsize=24)
蓝色=补丁。补丁(颜色='steelblue',标签='0')
橙色=补丁。补丁(颜色='橙色',标签='1')
plt.图例(手柄=[蓝色,橙色])
########################################################################################################################
###################################第2节-成对地块###############################################################
#sns.pairplot(数据,hue='Identifier')
#plt.子批次调整(.05,05,95,95)
#plt.suptitle('按标识符进行端点分析')
########################################################################################################################
plt.show()
这是我在运行时收到的消息:
Traceback (most recent call last):
File "C:\Users\Elizabeth\Desktop\UMAPs.py", line 31, in <module>
embedding = reducer.fit_transform(scaled_endpoints)
File "C:\ProgramData\Anaconda3\lib\site-packages\umap\umap_.py", line 2012, in fit_transform
self.fit(X, y)
File "C:\ProgramData\Anaconda3\lib\site-packages\umap\umap_.py", line 1833, in fit
self._search_graph.transpose()
File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\lil.py", line 437, in transpose
return self.tocsr(copy=copy).transpose(axes=axes, copy=False).tolil(copy=False)
File "C:\ProgramData\Anaconda3\lib\site-packages\scipy\sparse\lil.py", line 462, in tocsr
_csparsetools.lil_get_lengths(self.rows, indptr[1:])
File "_csparsetools.pyx", line 109, in scipy.sparse._csparsetools.lil_get_lengths
File "stringsource", line 658, in View.MemoryView.memoryview_cwrapper
File "stringsource", line 349, in View.MemoryView.memoryview.__cinit__
TypeError: a bytes-like object is required, not 'list'```
I have no idea how to fix the error or what to look up since looking up the error gives me nothing.
回溯(最近一次呼叫最后一次):
文件“C:\Users\Elizabeth\Desktop\umap.py”,第31行,在
嵌入=缩减器。拟合变换(缩放的端点)
文件“C:\ProgramData\Anaconda3\lib\site packages\umap\umap\uuuu.py”,第2012行,在fit\u转换中
自拟合(X,y)
文件“C:\ProgramData\Anaconda3\lib\site packages\umap\umap\uuuz.py”,第1833行,以fit格式
self.\u search\u graph.transpose()
文件“C:\ProgramData\Anaconda3\lib\site packages\scipy\sparse\lil.py”,第437行,转置
返回self.tocsr(copy=copy).transpose(axes=axes,copy=False).tolil(copy=False)
文件“C:\ProgramData\Anaconda3\lib\site packages\scipy\sparse\lil.py”,第462行,在tocsr中
_csparsetools.lil_get_长度(self.rows,indptr[1:])
文件“\u csparsetools.pyx”,第109行,在scipy.sparse.\u csparsetools.lil\u get\u长度中
文件“stringsource”,第658行,在View.MemoryView.MemoryView_cwrapper中
文件“stringsource”,第349行,在View.MemoryView.MemoryView.\uu cinit中__
TypeError:需要类似字节的对象,而不是“列表”```
我不知道如何修复错误或查找什么,因为查找错误不会给我任何帮助。
我不熟悉您正在使用的库,因此这不是对这个特定问题的正确答案,而是关于如何处理此类错误的一般提示 错误发生在这一行:
embedding = reducer.fit_transform(scaled_endpoints)
并抱怨向函数提供了错误类型的对象(列表而不是字节)。所以在这行之前,写下:
print(scaled_endpoints)
print(type(scaled_endpoints))
要准确了解您将要提供的内容,请使用
reducer.fit\u transform()
函数。然后转到该函数的文档。它需要什么样的输入,应该如何创建?你怎样才能让缩放\u端点
来满足这个期望?我偶然发现了同样的问题,奇怪的是UMAP一夜之间就停止了对数据(同一数据帧)的处理。无论如何,UMAP learn[1,2]似乎经常出现这种情况,我通过安装pynndescent修复了它:
pip安装PynDescent
或
conda安装-c conda forge pynndescent
我希望有帮助:)
[1] [2] 您从该错误消息中了解到了什么?你做过任何调试吗?这是一个很有帮助的建议,虽然不能回答问题。也许作为一个评论比作为一个回答更好你为我节省了大量的时间来转换成不同的类型!