我有对象和距离函数,并希望使用DBSCAN方法聚类这些scikit-learn.我的物体在欧几里德空间中没有表示.我知道,可以使用precomputed公制,但在我的情况下,由于距离矩阵的大小,这是非常不切实际的.有没有办法克服这个问题scikit-learn?也许,有没有其他可以实现的DBSCAN python实现?
当我尝试使用以下命令将 float 加载到 python 程序中时,我遇到了一个问题ctypes
C代码:
float test_ret_float(){
return 1.0;
}
Run Code Online (Sandbox Code Playgroud)
在Python中,所有的方式都会产生垃圾:
print lib.test_ret_float()
>>1074161254
print c_float(lib.test_ret_float()).value
>>1074161280.0
Run Code Online (Sandbox Code Playgroud)
如果int一切正常的话。
看来,该类型对话没有按预期工作,并且确实返回raw4byte 值,该值未转换为floatbut int,为什么?
我尝试进行培训,创建与Data.Tree相同的数据结构:
data MyTree a = Tree a [MyTree a]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试为这个数据结构创建show instance时遇到了麻烦:
instance Show (MyTree a) where
show (Tree a [v]) = show a -- Only first element
Run Code Online (Sandbox Code Playgroud)
我收到一个错误
No instance for (Show a)
arising from a use of `show'
Run Code Online (Sandbox Code Playgroud)
这对我来说有些奇怪.因为我能看一眼功能秀能够适用于任何类型.
第二个问题:在标准库中使用了派生方法,但有一些奇怪的定义:
instance Eq a => Eq (Tree a)
instance Read a => Read (Tree a)
instance Show a => Show (Tree a)
instance Data a => Data (Tree a)
Run Code Online (Sandbox Code Playgroud)
这意味着什么?
我想制作一个"走路"的模型.

所以我创建了8个函数:
g0 = lambda ct: ct.append((lambda (x,y): (x-1,y))(ct[-1]))
g1 = lambda ct: ct.append((lambda (x,y): (x-1,y+1))(ct[-1]))
g2 = lambda ct: ct.append((lambda (x,y): (x,y+1))(ct[-1]))
g3 = lambda ct: ct.append((lambda (x,y): (x+1,y+1))(ct[-1]))
g4 = lambda ct: ct.append((lambda (x,y): (x+1,y))(ct[-1]))
g5 = lambda ct: ct.append((lambda (x,y): (x+1,y-1))(ct[-1]))
g6 = lambda ct: ct.append((lambda (x,y): (x,y-1))(ct[-1]))
g7 = lambda ct: ct.append((lambda (x,y): (x-1,y-1))(ct[-1]))
Run Code Online (Sandbox Code Playgroud)
但当我尝试应用任何功能时,我得到None:
print g0([(50,50)])
None
Run Code Online (Sandbox Code Playgroud)
好吧,Iet尝试更传统的方式:
def g0(ct):
ct.append((lambda (x,y): (x-1,y))(ct[-1]))
return ct
Run Code Online (Sandbox Code Playgroud)
这是按预期工作的:
[(50, 50), (49, 50)]
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试
def g0(ct): …Run Code Online (Sandbox Code Playgroud) 我有一些具有不同属性的对象,例如:
newtype Symbol = Symbol String
newtype Charge = Charge Int
...
Run Code Online (Sandbox Code Playgroud)
原则上,第二个参数可以是任意的:String,Int,Float等.
我有一个包装这些类型的数据类型:
data Property = forall a. (Show a) => Property a
Run Code Online (Sandbox Code Playgroud)
但我需要如何比较这些实例的方式.如果我写这样的话:
instance Eq Property where
(Property a) == (Property b) = a == b
Run Code Online (Sandbox Code Playgroud)
它失败,因为编译器不知道a和b的类型.
问题是,如何使用这样的逻辑Eq实例Property:
a和b是不同类型的,即SymbolVS Charge它始终是False.a和b属于同一类型,检查a == b