手动对(2,0),(0,0),(0,1),(0,5),(2,5)五个样本进行层次聚类
基于new bing的参考:有帮助记得采纳一下
from sklearn.cluster import AgglomerativeClustering
import numpy as np
# 定义样本点
X = np.array([[2, 0], [0, 0], [0, 1], [0, 5], [2, 5]])
# 进行层次聚类
clustering = AgglomerativeClustering(n_clusters=None, distance_threshold=0).fit(X)
# 查看聚类结果
print(clustering.labels_)
class 派生类名(基类名):
类体
Python
中继承中的一些特点:
__init__()
方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。super()
前缀。Python
总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找(先在本类中查找调用的方法,找不到才去基类中找)。继承是指一个对象直接使用另一个对象的属性和方法,当一个类拥有另一个类的所有数据和操作时,就称这两个类之间具有继承关系,被继承的类称为父类或者超类,继承了父类或者超类的所有数据和操作的类称为子类。
继承类语法:
class class_name(fatherclass_name)
fatherclass_name
代表的是 class_name
要继承的类 。
如何调用父类的方法:使用类名访问父类中的方法,并在参数列表中引入对象 self
。
class Father():
def __init__(self):
print '我是初始化Father类中的方法'
print '供以后调用'
class Son(Father):
def __init__(self):
print '我是初始化Son类中的方法'
Father.__init__(self) # 使用类名访问父类中的方法,并在参数列表中引入对象self
child = Son()
下面看一个例子,我们以学校的老师和学生为例,老师和学生有共同的特征:姓名、年龄、地址、喜好,不同的是老师有工资,学生有成绩。
我们将学校成员归为一个共同的类。
class SchoolMember(object):
def __init__(self, name, age, addr, hoppy):
self.name = name
self.age = age
self.addr = addr
self.hoppy = hoppy
print '初始化的名字是%s' %self.name
def tell(self):
print '姓名:%s,年龄:%s,地址:%s,喜好:%s' %(self.name,self.age,self.addr,self.hoppy)
Teacher
类继承 SchoolMember
类,采用新式类继承写法时,super()
会带两个参数,第一个是子类的类名,第二个是 self
参数。
super()
可以避免一些类继承的潜在问题,特别是在多重继承上。
class Teacher(SchoolMember):
def __init__(self, name, age, addr, hoppy, salary):
# 使用类名访问父类中的方法,并在参数列表中引入对象self
SchoolMember.__init__(self, name, age, addr, hoppy)
# 新式类继承写法
# super(Teacher, self).__init__(name, age, addr, hoppy)
# 或者
# super().__init__(name, age, addr, hoppy)
self.salary = salary # 添加salary属性
print '我是继承SchoolMember的老师%s' %(self.name)
def tell(self):
SchoolMember.tell(self)
# 或者
# super.tell()
print '我这次的工资是 %s' %self.salary
Student
类继承 SchoolMember
类
class Student(SchoolMember):
def __init__(self, name, age, addr, hoppy, marks):
SchoolMember.__init__(self, name, age, addr, hoppy)
# 新式类继承写法
# super(Student, self).__init__(name, age, addr, hoppy)
# 或者
# super().__init__(name, age, addr, hoppy)
self.marks = marks # 添加marks属性
print '我是继承SchoolMember的学生%s' %(self.name)
def tell(self):
SchoolMember.tell(self)
# 或者
# super.tell()
print '我这次的成绩是 %s' %self.marks
# 分别创建Teacher和Student的实例
t = Teacher('Tom', 40, '陕西西安', '篮球',3000)
s = Student('jack', 14, '北京', '足球', 90)
members = (t, s)
for member in members:
member.tell()
'''
程序输出结果如下:
我是初始化Son类中的方法
我是初始化Father类中的方法
供以后调用
初始化的名字是Tom
我是继承SchoolMember的老师Tom
初始化的名字是jick
我是继承SchoolMember的学生jick
姓名:Tom,年龄:40,地址:陕西西安,喜好:篮球
我这次的工资是 3000
姓名:jack,年龄:14,地址:北京,喜好:足球
我这次的成绩是 90
'''