精华内容
下载资源
问答
  • 形状的五行属性
    千次阅读
    2021-11-19 11:08:03

    本文简单介绍下DataFrame的基本属性和方法

    一、DataFrame的基本属性

    (1)dataframe.shape     #元组,返回dataframe形状 如(1000,10)即1000行10列
    (2)dataframe.head(3)	#新DataFrame,获取前三行,默认获取前五行
    (3)dataframe.tail(3)	#新DataFrame,获取后三行,默认获取后五行
    (4)dataframe.index     #获取DataFrame的index
    (5)dataframe.columns   #获取columns,DataFrame的列索引列表
    (6)dataframe.values    #获取values	,获取所有values
    (7)dataframe.info      #获取dataframe的信息
    (8)dataframe.describe  #dataframe统计性描述
    (9)dataframe.dtypes    #查看dataframe所有列的数据类型
    

    二、 DataFrame的方法

    (1)dataframe.T	               	   #转置,新DataFrame,行列互换
    (2)data.index = list			   #设置index,新DataFrame按照list的数据内容修改index,必须整体全部修改
    (3)df.reset_index(drop=False)     #重设新的下标索引,新DataFrame,drop:默认为False,不删除原来索引,如果为True,删除原来的索引值
    (4)df.set_index(keys, drop=True)  #把某列值设置为新的索引,keys : 列索引名成或者列索引名称的列表;drop: 默认为False,不删除原来索引,如果为True,删除原来的索引值	       
    (5)dataframe[‘A’].astype(np.float32)  #修改数据类型
    
    更多相关内容
  • 思维模型 五行

    千次阅读 2020-06-03 18:34:36
    背景知识:在讲这些个故事前,我们要知道 五行的相生相克关系以及 五行与 我们年龄段、男女的关系。五行生克图如下: 五行与年纪的关系如下: 五行与婚姻阶段(该部分主要描述 大的 婚姻阶段): 少男少女:...

    本系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知


    0 背景知识

    在讲这些个故事前,我们要知道 五行的相生相克关系以及 五行与 我们年龄段、男女的关系。

    @1 五行生克图如下:

    @2 五行与年纪的关系如下:

    @3 在关系中被“生”是一种舒服的感受;被“克”是一种不好的感受;“比和”可以理解为即可“生”,也可“克” ,就像兄弟一样,有时会相互帮助,有时也会相互攀比,要具体问题具体分析。

    接下来开始我们的模型故事。

    1 模型故事

    五行与婚姻阶段(该部分主要描述 大的 婚姻阶段):

    1. 少男少女:这是在 恋爱和婚姻开始的阶段,小男孩儿追 小女孩儿 叫做 土生金,这时候 是和谐、开心的。
    2. 中男中女:结婚几年后 遇到 七年之痒,结婚大概七八年时就没有激情了,麻木了,我拉着你的手,就像左手拉右手,我摸你的腿,就像摸自己的大腿一样了,婚姻到了那个阶段,变成了 中年男女啊,从土生金变成了水克火。中男属水而中女属火,婚姻在这个时候走到了水火不容水客户的阶段了,而这也是离婚率最高的时候,而且大量的这个年龄段儿的男人伤这个年龄段的女人的心,并且婚姻这时一旦破裂,受伤的往往是女性,因为水克火。
    3. 长男长女:当然如果再发展几年,熬过去,婚姻发展到 四十多岁五十岁以后就到了下一个阶段,长男长女 五行均属木。木和木自己的关系是比和。所以这时候呢相对又和谐了,这种和谐,虽然没有相生和相克,没那么有激情,但是就习惯了,所以人一过 四五十多岁,离婚率反而下降了,因为到了木木比合的阶段,但三十来岁的人就不凑合,非常容易擦枪走火。
    4. 老男老女:再到老爷爷老奶奶。老男属金,老女属土,又返回到了 土生金的阶段,但是颠倒过来了,男女之间的关系是不一样的,年轻时 是土生金 是少男生少女。老了就变成了老女 生 老男。我们可以看到大街上一般老太太 寿命高,在大街上往往是老奶奶手搀扶着那个老头儿照顾那个老头儿,所以叫土生金。

    我们的婚姻就是从土生金到水火相克,到木木比和 相互习惯,再到反过来的土生金 这样的一个过程。所以说 五行 这个学问特别重要,如果你了解,就知道在当下这个年龄段儿我们该做什么,每个年龄段我们应该注意什么而不是过了这个年龄段儿回过去后悔。所以五行 距离 我们的生活一点都不远,而且很近。你认为很多莫名其妙不可理解,找不到原因是完全可以找到原因,在三千多年前中国的老祖宗就给他定位好了。

    五行与相:

    • 金相:王者之相。就是高大的、浑圆的、饱满的。比较霸气,比较爱做领导比较权威,比较喜欢居高临下。
    • 水相:比如女孩子 身材和脸上都很漂亮,双眼皮线条清晰轮廓分明,这就是水相。一个人,比如说有些人眼睛长的像那个京剧演员一样叫凤眼。就是线条清晰轮廓分明这个也叫水,或者我们看到了这个藤蔓植物。那个藤的植物线条很柔和,这也是水相。
    • 木相:又瘦又高又细又长,高个子瘦高的,但颜色上白白净净非常的清朗,儒雅,这就是木相。
    • 火相:疙疙瘩瘩,即骨相是外漏的,颧骨很高,比较江湖的性格。火相给人的感觉是很强健的黑里透红。
    • 土相:土就是平常的。又低又矮又平又方、没特点,放到人群中没啥辨识度的就是土。

    五行色彩 与招牌/标志/建筑(仅从五行色彩角度看影响):

    背景知识:金-白色,木-青色,水-黑色,火-红色,土-黄色。对于招牌而言 底色为客,字号和商标为主,因此一个招牌如果“客色生主色”或“主色克客色”则吉,反之“客色克主色”或“主色生客色”(即 “客色泄主色”)则凶。

    我们先来看 中国农业银行:

    中国农业银行招牌的底色为白色,属金,文字为黑色属水,LOGO为绿色属于木,这里 金为“客色”,水和木为主色(其中字号黑色的面积比较大,所以主色以水为主)。所谓“金生水”,农业银行这个招牌“客色”生“主色”。而字号(黑色属水)又生商标(绿色属木),“金生水”、“水生木”形成一个循环相生的能量。虽然底色白色对logo颜色相克,但是由于LOGO面积相对文字部分较小,所以农业银行这个招牌总体属于吉利的。

    接下来我们再来看看 邮政银行:

    中国邮政储蓄银行的招牌中,底色为绿色属于“木”,字号和logo为黄色属“土”,所谓“木克土”,也就是 “客色克主色”,总体上讲对组织的发展并不有利,至于邮政储蓄银行的业务,我们都清楚的。

    接下来我们看看 纳粹的旗帜(左边是纳粹,右边是佛教万字符):

    纳粹的标志“卐”,也体现五行生克的道理:它被设计成与佛家“卍”的印记(“卍”是上古时代许多部落的一种符咒,在古代印度、波斯、希腊、埃及、特洛伊等国的历史上均有出现,后来被古代的一些宗教所沿用。最初人们把它看成是太阳或火的象征,以后普遍被作为吉祥的标志。随着古代印度佛教的传播,“卍”字也传入中国。)正好相反的形状,而颜色则为红、白、黑三色。五行原理气机驳杂、乱冲乱克的矛盾体,五行之火(红色)克五行之金(白色),而五行之水(黑色)又克五行之火(红色)。纳粹党逆行天下,虽没有名垂千古的功效,但可以有遗臭万年的威力。

    接下来我们看看 五行色彩在建筑方面的应用:

    故宫紫禁城的五行色彩搭配,就绝妙地体现了五行相生的原则,紫禁城的城墙是红色的,而上面的琉璃瓦及故宫众多殿宇的金顶为黄色,体现了五行中火(红色)土(黄色)相生的原理。历经数百年沧桑,紫禁城在今日更显其独步天下的王者风范。

    五行与身体健康(各种失衡与 对策):

    • 金 在人体失衡时,呼吸系统机能比较弱,千万不要抽烟,要维持正常作息,早睡早起,才可以保护先天比较弱的呼吸系统。偏好吃重口味,辣口味的东西,像是麻辣火锅,四川菜,应该都符合您的口味。此时我们要做好饮食均衡,菜色均衡,则阴阳五行调和。
    • 木 在人体失衡时,肝胆机能比较弱,容易肝火旺盛,甚至容易导致免疫功能衰退、肝功能异常、脂肪肝、肝硬化、青光眼、白内障或视力病变等问题。此时我们要尽量不喝酒,维持正常作息,偏好吃酸的东西,像是酸辣汤等,应该都符合口味。
    • 水 在人体失衡时,体质比较寒冷,容易手脚冰冷,肾水系统比较差,无法从事需要大量劳力的工作,容易有血压、贫血、心脏的问题,进而容易导致失眠、忧郁、脑神经衰弱、听力异常。。。此时我们要调理饮食,尤其重口味的食物吃多了会伤肾,调理食物的方式也要由多油炒改为多蒸煮,减少盐分和油脂的摄取量。
    • 火 在人体失衡时,心血管机能比较弱,容易有高血压,高血脂,心跳的问题。容易导致心血管功能异常、内分泌系统异常、肠阻塞胀气、心律不整、心室肥大、脑溢血、中风、视力病变等问题。此时我们不能过度劳累,要维持正常作息,尽量不要喝冰的饮料,以免伤了元气。
    • 土 在人体失衡时,胃肠机能比较弱,容易有腹胀,腹痛,腹泻,消化吸收的问题。此时我们要早睡早起,三餐要定时定量,少吃刺激性饮食,偏好吃各种甜食或甜点,因您的细胞中,充满太多活太少的土五行。

    五行的生克理解与运用:

    • 年轻的小女孩儿,如果她的上司是一个中年女人,那么多半会被莫名其妙的讨厌。这里就叫火克金,火是中女,即三十多岁的女人。三十多岁左右的女同事,看着二十多岁的小女孩儿,恨不打一处来。怎么看都像小狐狸精,心里就最常见的一种想法就是老娘虽然青春不在,但是......。你找个年轻小女孩年轻漂亮,我这个三十多岁的女士这个吃的盐比你吃的米都多,过的桥比你走路多。所以一般我们看单位里面年轻的小女孩,如果遇到一个三十多岁的女人做他的领导部门经理。那这小女孩儿普遍会比较难受。反之,同样是三十多岁的女同志。莫名其妙地讨厌小女孩儿,现在一看了二十多岁的小男孩。就相当的受用,相当的顺眼。那么为什么会莫名其妙的喜欢土的小男孩儿呢,火生土啊,是中年的女士。对于这个小男孩来讲这个关系叫做“被生”。如果跟三十多岁的女主管在一起工作,那么他是很容易被照顾的。
    • 如果个小团队的领导是一个年轻的小伙子。团队的成员都是一些年轻的小女孩儿,我们发现这个小伙子,与其说他是个领导,不如说他是这个团队的奴隶。又当老师又当领导又当哥哥又当被发泄的对象。这就是 土生金。反之,如果发现一个小女孩儿当领导下面领导的一群小男孩呢,反而很容易。所以团队搭建。这也是土生金。​​​​​​​​​​​​​​
    • 与管理者打交道的那些五行:我们跟管理者(金)打交道采用 金生水的理念。水指的是聪明、伶俐、修饰、善于包装、漂亮,一般大领导身边的秘书多是这种性格,同时金怕火。火是江湖义气的,火克金。领导最烦这种人。所以领导身边的大炮没一个好结果。因为火克金,同时这个火就是他的下属克不动,反被克,所以领导身边的那些大舌头让领导难受,想说就说,想做就做领导就很难受。让领导最舒服的是领导的司机、领导家的保姆,哪种属性让领导舒服呢,是土,没特点的老实的不多说话的。在领导那里能获得好处的是什么人,金生水。所以才有所谓的官商勾结。金生水,官商能够在这里拿到好处。跟领导在一起最难受的是什么人,金克木。木是知识文化学问,所以三千年来我们看一下有文化的人跟朝廷搞到一块儿,比如文字狱、焚书坑儒。。。,并且书生一般往往都是被朝廷利用。
    • 商人那点事儿:聪明灵利的大商人,在城市里面特别能呼风唤雨的这些人,就怕老农民务实,反正我就这样,以不变应万变,他是最难受的,这就是土克水。那么水对什么最有办法,水克火。所以古今中外多数成功的黑社会都是走向商业化,成熟的。黑手党在意大利干什么代开连锁洗衣店,这干洗店。水克火,火这种东西不用水来约束是不行的。如果你是一个做学问的人那你喜欢跟谁在一起?我们要跟知识分子打交道,应该怎么办呢?木生火。要么就来简单粗暴的江湖义气啰!这里参考一个例子:柳传志,为什么能够在中科院能够出来(木生火)。因为一堆知识分子在一起是相互之间最不服气的。柳传志是属于这群知识分子当中的够江湖,够老大够朋友你照顾兄弟一起的人,所以你有了这种特点,反而知识分子就跟你走了,所以在一群木当中火是非常容易出来的,因为木生火,所以柳传志有今天的成就。
    • 看 他/她的另一半:如果你看到一个女孩儿是一个火相。木是可以生火的,火相的人江湖呢,他是喜欢和木在一起是舒服的。他颧骨很高,火相那个叫骨相外漏,这时候那些戴着眼镜的单身书生会去追,因为他就好这一口儿。所以我看到这种江湖气很重火相的女人,就可以说你老公估计是一个什么样的形象,使用的原理就是 木生火(他喜欢她),火生土(她喜欢他)。同样如果今天是一个水相的女人呢,水相的女人长的聪明灵动漂亮的。那么金生水,水生木。所以说她就喜欢金相的,她老公往往比她强。这就是法则、规律。如果是一个土相的女人,没有什么特点,然后平常的、温柔的、善良的,这样的女人。山东有一句话叫:懒汉配丑妻、英雄的老婆娇滴滴 形容的再贴切不过。往往她的老公两种,一种就是和他一样,普通的平常的慵懒的,要么就是江湖的义气的英雄的,所以。点评你的同时点评你家的人是什么样子,你的另外一半是什么样子就是通过这套理论告诉大家的。实际上不止是看 他/她的另一半可以这样看,如果我们本身是管理者,那么你分配工作时候 也要注意这些,利用“生克”之道(知道什么生他你知道他生什么)让团队中的每个人合理配置,才能使得团队的力量最大化,也使得团队的矛盾最小化。
    • 中男那点事儿:一个三十多岁的一个男人。中男属水,那么怎样才会比较和谐如意呢?金生水,就是三十多岁,三十五岁上下的男人。他走上领导的岗位,他属金的话,它是比较容易有政绩的。金生水最难受的叫土克水。如果这个人本身很土务实,诚实,那么在他这个水的年龄,他就是个土的性格,土和水是相克的,所以就郁闷。因为一个三十多岁却很普通很平常,没有很强烈的特点,没有掌握权力的男人是压力很大的。那么领导什么性格比较好,就金生水就聪明睿智,是能够滋养这个领导取得更好的成绩的;什么性格不好呢?叫金克木。知识分子当领导问题很多的。因为金克木,因为你的脚下跟你的性格格调、跟你的灵魂是冲突的。
    • 从五行看男人前半生该怎么活更好?少男属土,火生土,土生金,现在大家的这个少男这个年纪(在土的阶段)去做什么了呢,去读书,很多事被逼着读书,学习属木,木和土的关系叫木克土。所以说对大部分孩子来说往往是痛苦的,读过的那些书虽然养成了思考的习惯和逻辑,但是并不能滋养他的生命。二十来岁小伙子应该更多地结交朋友更多的懂得江湖义气。活出火的样子,哥们儿义气特别重的人,哥们儿朋友特别多的人往往是对他未来的生命滋养的最好,这就叫做火生土。二十多岁的人最重要的不是创业,而是跟随一个你所佩服的领导向他学习,这叫做土生金。随着年龄的增长到了中年男性,中男属水,金生水,水生木,金是领导,如果你到了35岁左右。你还没有成为一个团队的领导或者一个部门的老大,那你要努力。因为只有你成为一把手只有你有了一定的权力的时候,这时你才能够找到自信,你的生命才会得到滋养,你才能够在接下来有大展宏图的机会,现在很多世界五百强的企业,一旦过了35岁,几乎没有提升的空间了。三十多岁,正是意气风发的时候,一定要想办法成为领导,甚至自己创业,因为这时候权力(金)这东西是可以滋养中男生命的。同时水生木。木代表的学习学问。这时候中年男士他可以驾驭学问,所以也一定要去学习。
    • 从五行看​​​​​​​女人前半生该怎么活更好?少女属金,土生金,金生水。说土代表平常的、普通的。作为少女在这年龄段儿你要让自己踏实下来稳下来沉下心来认真。要从做好简单的事情开始,土代表的是简单的事情。你把普通事做好,这就是少女应该做的事情。那到了中年女性。三十五岁中女的年龄,到了火的年龄,木生火,火生土。所以中年女性这时候如果有知识有涵养,她的生命会变得特别的滋润。同时她育人用土最好,比如带下属 一般选择 年轻的男孩子 会更得心应手一些。如果一个中年女性活出了特别聪明,水的样子那她是相克的。所以说,这时候你要活成土的样子,让自己穿上职业装让自己更加踏实的做事。同时不要太聪明,因为这个时候聪明并不能滋养你的生命。

    五行与山:

    • 金行山:一般被认为是很高大、很雄浑的这类叫金行山,传统上讲金行山下出地王,所以有兴趣他就可以研究一下历代帝王他的家乡。
    • 水行山:比如说江浙一带,特别是浙江的山。这首先很清脆,青山秀水,连绵不断,很漂亮的线条清晰轮廓分明。当然水行山下出有钱人,因为中国人认为水为财啊,所以你看。像浙江广东啊,这些改革开放最先发达起来的他很多都是水行山。
    • 木行山:山根人是一样的就很高很陡,就像湖南湖北的山,尤其是张家界是个典型。山就跟筷子一样。古人云:唯楚有才,于斯为盛,湘人不倒,华夏不倾。木行山下出什么,木在八卦里面表示巽卦,有才华、文化知识学问的意思,所以木行山下出秀才。湖南人两大特点,第一是会读书,第二是能打仗。所以大半个中国的大半个近代史都是湖南人打出来的,两大特点会读书能打仗。
    • 火行山:疙疙瘩瘩乱石乱石头山、乱石林立杂草丛生。这样的山的就叫做火行山。火星山下出盗贼,比如 水泊梁山。
    • 土行山:又低又矮小丘陵你说它是山呢,他也算个山,其实也不算什么山,这叫做土行山。

    五行与行业:

    • 金展示的行业比如说:领导者、政府机关有很多垄断性的企业,石油电力这样的我们就称之为叫金的行业。那金的职业指的就是领导层。
    • 水代表的行业叫商人,服务业,商人需要好看,需要灵巧,用一些技巧的。
    • 木是代表的行业叫学术的研究以及和知识相关的这些行业,都属于很典型依赖脑力智慧的。
    • 火分为地面上的和地面下,的阴和阳的,比如说公检法还有在中国几千年历史上不断提及有一个词语叫江湖,至今为止,很少有人能说清楚什么是江湖,在皇权至上的中国历史上存在的,即有礼义廉耻,也有刘关张桃园三结义,这是中国的另外一种价值观。所以公检法、军警、江湖,这都是火的行业。
    • 土就是平民、工农、做基础劳动的,这叫土的行业,一般都是基层员工/人员。

    2 模型 五行

    五行是中国古代哲学的一种系统观,广泛用于中医堪舆(风水)、命理相术占卜等方面。五行的意义包涵借着阴阳演变过程的五种基本动态:(代表浸润)、(代表破灭)、(代表敛聚聚)、(代表生长)、(代表融合)。中国古代哲学家用五行理论来说明世界万物的形成及其相互关系。它强调整体,旨在描述事物的运动形式以及转化关系。阴阳是古代的对立统一学说,五行是原始的系统论。

    道家五行学说最早,旨在描述事物的运动形式以及转化关系。五行学说是我国古代的取象比类学说,不是五种元素,而是将万事万物按照润下、炎上、曲直、从革、稼穑的性质归属到水火木金土五个项目中,与西方古代的地、水、火、风四元素学说有区别,是集哲学、占卜、算命、历法、中医学、社会学等诸多学于一身的理论。

    五行系指古人把宇宙万物划分为五种性质的事物,也即分成木、火、土、金、水五大类,并叫它们为“五行”。早见《尚书·洪范》记载:“五行:一曰水,二曰火,三曰木,四曰金,五曰土。水曰润下(滋润),火曰炎上(燃烧),木曰曲直(弯曲,舒张),金曰从革(成分致密,善分割),土爰稼穑(意指播种收获)。润下作咸,炎上作苦,曲直作酸,从革作辛,稼穑作甘。”这里不但将宇宙万物进行了分类,而且对每类的性质与特征都做了界定。

    后人根据对五行的认识,又创造了五行相生相克理论:

    1. 相生,是指两类属性不同的事物之间存在相互帮助,相互促进的关系;具体是:木生火,火生土,土生金,金生水,水生木。
    2. 相克,则与相生相反,是指两类不同五行属性事物之间关系是相互克制的;具体是:木克土,土克水,水克火、火克金、金克木。

    五行学说采用取象比类的方法,将世上万事万物朴素地分为五类,在五行属性的基础上,运用生克制化的关系,来说明和解释事物之间的相互联系和变化。像阴阳一样,五行之间存在着相生相克的规律。相生相克是任何事物不可分割的两个方面。没有相生,就没有任何事物的发生发展,没有相克,就没有事物发生发展中的协调和平衡。相生保证了事物发展的原动力和可能性,相克保证了事物发展的控制力和协调性。事物之间这种生中有克,克中有生,相辅相成,互相为用的关系,推动和维持事物的不断生长、变化和发展。《类经图翼》曰:“盖造化之机,不可无生,亦不可无制。无生则发育无由,无制则亢而为害。生克循环,运行不息,而天地之道,斯无穷已。”

    运用五行的各种特性,以木火土金水为中心,凡自然界中的各种现象、特征、形态、功能、表现等诸方面和五行中某一行的特性相类似,就 把它归纳于哪一行中,分成五类,在五行属性的基础上分门别类作系统归纳,将各种纷繁复杂的现象理出五行规律,从而可以说明各类之间的联系及变化关系。

    3 模型简图

    展开全文
  • DataFrame是一个类似于二维数组或表格(如excel)的对象,既有索引,又有列索引 索引,表明不同行,横向索引,叫index,0轴,axis=0 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1 2.1 DataFrame的...

    DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引

    • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
    • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

    在这里插入图片描述

    DataFrame属性

    • shape – 形状
    • index – 行索引
    • columns – 列索引
    • values – 查看值
    • T – 转置
    • head() – 查看头部内容
    • tail() – 查看尾部内容
    import pandas as pd
    
    # Dataframe 数据结构
    
    # Dataframe是一个表格型的数据结构,“带有标签的二维数组”。
    # Dataframe带有index(行标签)和columns(列标签)
    
    data = {'name': ['Jack', 'Tom', 'Mary'],
            'age': [18, 19, 20],
            'gender': ['m', 'm', 'w']}
    frame = pd.DataFrame(data)
    
    # 查看数据,数据类型为dataframe
    print("frame = \n{0} \ntype(frame) = {1}".format(frame, type(frame)))
    print("-" * 100)
    
    # .index查看行标签
    # .columns查看列标签
    # .values查看值,数据类型为ndarray
    print("frame.index = {0}----type(frame.index) = {1}".format(frame.index, type(frame.index)))
    print("-" * 50)
    print("frame.columns = {0}----type(frame.columns) = {1}".format(frame.columns, type(frame.columns)))
    print("-" * 50)
    print("frame.values = \n{0} \ntype(frame.values) = {1}".format(frame.values, type(frame.values)))
    

    打印结果:

    frame = 
       name  age gender
    0  Jack   18      m
    1   Tom   19      m
    2  Mary   20      w 
    type(frame) = <class 'pandas.core.frame.DataFrame'>
    ----------------------------------------------------------------------------------------------------
    frame.index = RangeIndex(start=0, stop=3, step=1)----type(frame.index) = <class 'pandas.core.indexes.range.RangeIndex'>
    --------------------------------------------------
    frame.columns = Index(['name', 'age', 'gender'], dtype='object')----type(frame.columns) = <class 'pandas.core.indexes.base.Index'>
    --------------------------------------------------
    frame.values = 
    [['Jack' 18 'm']
     ['Tom' 19 'm']
     ['Mary' 20 'w']] 
    type(frame.values) = <class 'numpy.ndarray'>
    
    Process finished with exit code 0
    

    一、 形状/shape

    import pandas as pd
    
    data = {'name': ['Jack', 'Tom', 'Mary'],
            'age': [18, 19, 20],
            'gender': ['m', 'm', 'w']}
    data = pd.DataFrame(data)
    print("data = \n{0} \ntype(data) = {1}".format(data, type(data)))
    print("-" * 50)
    print("data.shape = ", data.shape)
    

    打印结果:

    data = 
       name  age gender
    0  Jack   18      m
    1   Tom   19      m
    2  Mary   20      w 
    type(data) = <class 'pandas.core.frame.DataFrame'>
    --------------------------------------------------
    data.shape =  (3, 3)
    

    二、 行索引/index

    1、默认行索引

    import pandas as pd
    
    data = {'name': ['Jack', 'Tom', 'Mary'],
            'age': [18, 19, 20],
            'gender': ['m', 'm', 'w']}
    data = pd.DataFrame(data)
    print("data = \n{0} \ntype(data) = {1}".format(data, type(data)))
    print("-" * 50)
    print("data.index = ", data.index)
    

    打印结果:

    data = 
       name  age gender
    0  Jack   18      m
    1   Tom   19      m
    2  Mary   20      w 
    type(data) = <class 'pandas.core.frame.DataFrame'>
    --------------------------------------------------
    data.index =  RangeIndex(start=0, stop=3, step=1)
    

    2、自定义行索引

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.index = ", data.index)
    

    打印结果:

    score = 
     [[99 69 59 55 84]
     [46 88 70 92 95]
     [60 43 72 99 91]
     [86 98 61 75 67]
     [79 89 43 60 85]
     [44 88 84 79 94]
     [88 77 83 71 70]
     [49 76 79 41 63]
     [78 80 65 84 73]
     [45 67 81 76 98]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  99  69  59  55  84
    同学1  46  88  70  92  95
    同学2  60  43  72  99  91
    同学3  86  98  61  75  67
    同学4  79  89  43  60  85
    同学5  44  88  84  79  94
    同学6  88  77  83  71  70
    同学7  49  76  79  41  63
    同学8  78  80  65  84  73
    同学9  45  67  81  76  98
    --------------------------------------------------
    data.index =  Index(['同学0', '同学1', '同学2', '同学3', '同学4', '同学5', '同学6', '同学7', '同学8', '同学9'], dtype='object')
    
    Process finished with exit code 0
    

    三、列索引/columns

    DataFrame的列索引列表

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.columns = ", data.columns)
    

    打印结果:

    score = 
     [[68 83 77 81 80]
     [72 60 49 73 77]
     [93 52 50 53 59]
     [50 59 91 89 84]
     [77 41 62 80 88]
     [44 93 48 70 58]
     [92 55 79 60 71]
     [82 76 92 69 89]
     [68 75 67 57 73]
     [95 44 48 87 90]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  68  83  77  81  80
    同学1  72  60  49  73  77
    同学2  93  52  50  53  59
    同学3  50  59  91  89  84
    同学4  77  41  62  80  88
    同学5  44  93  48  70  58
    同学6  92  55  79  60  71
    同学7  82  76  92  69  89
    同学8  68  75  67  57  73
    同学9  95  44  48  87  90
    --------------------------------------------------
    data.columns =  Index(['语文', '数学', '英语', '政治', '体育'], dtype='object')
    

    四、查看值/values

    直接获取其中array的值

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.values = \n", data.values)
    

    打印结果:

    score = 
     [[69 82 50 67 53]
     [58 65 90 68 50]
     [67 45 73 93 96]
     [65 81 91 48 69]
     [97 80 51 80 78]
     [76 82 97 52 72]
     [99 59 42 83 58]
     [78 87 71 90 61]
     [55 88 57 48 60]
     [48 68 89 98 69]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  69  82  50  67  53
    同学1  58  65  90  68  50
    同学2  67  45  73  93  96
    同学3  65  81  91  48  69
    同学4  97  80  51  80  78
    同学5  76  82  97  52  72
    同学6  99  59  42  83  58
    同学7  78  87  71  90  61
    同学8  55  88  57  48  60
    同学9  48  68  89  98  69
    --------------------------------------------------
    data.values = 
     [[69 82 50 67 53]
     [58 65 90 68 50]
     [67 45 73 93 96]
     [65 81 91 48 69]
     [97 80 51 80 78]
     [76 82 97 52 72]
     [99 59 42 83 58]
     [78 87 71 90 61]
     [55 88 57 48 60]
     [48 68 89 98 69]]
    
    Process finished with exit code 0
    

    五、转置/T

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.T = \n", data.T)
    

    打印结果:

    score = 
     [[73 51 51 47 53]
     [77 90 74 65 91]
     [78 41 92 52 87]
     [82 90 89 74 52]
     [84 43 98 89 41]
     [60 81 56 90 44]
     [74 86 58 67 72]
     [95 49 99 58 92]
     [47 55 83 88 41]
     [56 55 61 93 92]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  73  51  51  47  53
    同学1  77  90  74  65  91
    同学2  78  41  92  52  87
    同学3  82  90  89  74  52
    同学4  84  43  98  89  41
    同学5  60  81  56  90  44
    同学6  74  86  58  67  72
    同学7  95  49  99  58  92
    同学8  47  55  83  88  41
    同学9  56  55  61  93  92
    --------------------------------------------------
    data.T = 
         同学0  同学1  同学2  同学3  同学4  同学5  同学6  同学7  同学8  同学9
    语文   73   77   78   82   84   60   74   95   47   56
    数学   51   90   41   90   43   81   86   49   55   55
    英语   51   74   92   89   98   56   58   99   83   61
    政治   47   65   52   74   89   90   67   58   88   93
    体育   53   91   87   52   41   44   72   92   41   92
    
    Process finished with exit code 0
    

    六、head():显示前5行内容

    如果不补充参数,默认5行。填入参数N则显示前N行

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.head() = \n", data.head())
    

    打印结果:

    score = 
     [[72 57 55 99 64]
     [94 46 62 92 74]
     [54 88 84 86 65]
     [92 72 82 53 71]
     [72 43 58 69 87]
     [97 61 92 90 40]
     [86 45 90 44 85]
     [40 46 42 94 67]
     [92 79 95 72 78]
     [42 66 88 52 58]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  72  57  55  99  64
    同学1  94  46  62  92  74
    同学2  54  88  84  86  65
    同学3  92  72  82  53  71
    同学4  72  43  58  69  87
    同学5  97  61  92  90  40
    同学6  86  45  90  44  85
    同学7  40  46  42  94  67
    同学8  92  79  95  72  78
    同学9  42  66  88  52  58
    --------------------------------------------------
    data.head() = 
          语文  数学  英语  政治  体育
    同学0  72  57  55  99  64
    同学1  94  46  62  92  74
    同学2  54  88  84  86  65
    同学3  92  72  82  53  71
    同学4  72  43  58  69  87
    
    Process finished with exit code 0
    

    七、tail():显示后5行内容

    如果不补充参数,默认5行。填入参数N则显示后N行

    import numpy as np
    import pandas as pd
    
    # 生成10名同学,5门功课的数据
    score = np.random.randint(40, 100, (10, 5))
    print("score = \n", score)
    print("-" * 100)
    
    # 构造行索引序列
    subjects = ["语文", "数学", "英语", "政治", "体育"]
    # 构造列索引序列
    stu = ['同学' + str(i) for i in range(score.shape[0])]
    # 添加行索引
    data = pd.DataFrame(score, columns=subjects, index=stu)
    
    print("data = \n", data)
    print("-" * 50)
    print("data.tail() = \n", data.tail())
    

    打印结果:

    score = 
     [[93 50 72 51 46]
     [42 60 59 47 69]
     [67 60 87 48 60]
     [77 74 81 67 55]
     [97 70 40 49 66]
     [88 46 99 68 70]
     [94 96 80 61 65]
     [90 67 77 57 80]
     [54 42 52 93 55]
     [54 68 58 97 99]]
    ----------------------------------------------------------------------------------------------------
    data = 
          语文  数学  英语  政治  体育
    同学0  93  50  72  51  46
    同学1  42  60  59  47  69
    同学2  67  60  87  48  60
    同学3  77  74  81  67  55
    同学4  97  70  40  49  66
    同学5  88  46  99  68  70
    同学6  94  96  80  61  65
    同学7  90  67  77  57  80
    同学8  54  42  52  93  55
    同学9  54  68  58  97  99
    --------------------------------------------------
    data.tail() = 
          语文  数学  英语  政治  体育
    同学5  88  46  99  68  70
    同学6  94  96  80  61  65
    同学7  90  67  77  57  80
    同学8  54  42  52  93  55
    同学9  54  68  58  97  99
    
    Process finished with exit code 0
    
    展开全文
  • 本文实现两个案例,分别是:鸢尾花数据分类 和 鸢尾花数据特征属性比较。

    本文实现两个案例,分别是:鸢尾花数据分类 和 鸢尾花数据特征属性比较。

    用到的数据集跟前面博客中KNN中的数据集是一样:
    数据链接:https://download.csdn.net/download/zhanglianhai555/12340138

    1.鸢尾花数据分类

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    import matplotlib as mpl
    import warnings
    
    from sklearn import tree #决策树
    from sklearn.tree import DecisionTreeClassifier #分类树
    from sklearn.model_selection  import train_test_split#测试集和训练集
    from sklearn.pipeline import Pipeline #管道
    from sklearn.feature_selection import SelectKBest #特征选择
    from sklearn.feature_selection import chi2 #卡方统计量
    
    from sklearn.preprocessing import MinMaxScaler  #数据归一化
    from sklearn.decomposition import PCA #主成分分析
    from sklearn.model_selection import GridSearchCV #网格搜索交叉验证,用于选择最优的参数
    
    ## 设置属性防止中文乱码
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    
    warnings.filterwarnings('ignore', category=FutureWarning)
    
    iris_feature_E = 'sepal length', 'sepal width', 'petal length', 'petal width'
    iris_feature_C = '花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度'
    iris_class = 'Iris-setosa', 'Iris-versicolor', 'Iris-virginica'
    
    #读取数据
    path = './datas/iris.data'  
    data = pd.read_csv(path, header=None)
    x=data[list(range(4))]#获取X变量
    y=pd.Categorical(data[4]).codes#把Y转换成分类型的0,1,2
    print("总样本数目:%d;特征属性数目:%d" % x.shape)
    

    总样本数目:150;特征属性数目:4

    x.head(1)
    

    在这里插入图片描述

    y
    

    在这里插入图片描述

    data.head(5)
    

    在这里插入图片描述

    #数据进行分割(训练数据和测试数据)
    x_train1, x_test1, y_train1, y_test1 = train_test_split(x, y, train_size=0.8, random_state=14)
    
    x_train, x_test, y_train, y_test = x_train1, x_test1, y_train1, y_test1
    print ("训练数据集样本数目:%d, 测试数据集样本数目:%d" % (x_train.shape[0], x_test.shape[0]))
    ## 因为需要体现以下是分类模型,因为DecisionTreeClassifier是分类算法,要求y必须是int类型
    y_train = y_train.astype(np.int)
    y_test = y_test.astype(np.int)
    

    训练数据集样本数目:120, 测试数据集样本数目:30

    y_train
    

    在这里插入图片描述

    #数据标准化
    #StandardScaler (基于特征矩阵的列,将属性值转换至服从正态分布)
    #标准化是依照特征矩阵的列处理数据,其通过求z-score的方法,将样本的特征值转换到同一量纲下
    #常用与基于正态分布的算法,比如回归
    
    #数据归一化
    #MinMaxScaler (区间缩放,基于最大最小值,将数据转换到0,1区间上的)
    #提升模型收敛速度,提升模型精度
    #常见用于神经网络
    
    #Normalizer (基于矩阵的行,将样本向量转换为单位向量)
    #其目的在于样本向量在点乘运算或其他核函数计算相似性时,拥有统一的标准
    #常见用于文本分类和聚类、logistic回归中也会使用,有效防止过拟合
    
    ss = MinMaxScaler()
    #用标准化方法对数据进行处理并转换
    ## scikit learn中模型API说明:
    ### fit: 模型训练;基于给定的训练集(X,Y)训练出一个模型;该API是没有返回值;eg: ss.fit(X_train, Y_train)执行后ss这个模型对象就训练好了
    ### transform:数据转换;使用训练好的模型对给定的数据集(X)进行转换操作;一般如果训练集进行转换操作,那么测试集也需要转换操作;这个API只在特征工程过程中出现
    ### predict: 数据转换/数据预测;功能和transform一样,都是对给定的数据集X进行转换操作,只是transform中返回的是一个新的X, 而predict返回的是预测值Y;这个API只在算法模型中出现
    ### fit_transform: fit+transform两个API的合并,表示先根据给定的数据训练模型(fit),然后使用训练好的模型对给定的数据进行转换操作
    x_train = ss.fit_transform(x_train)
    x_test = ss.transform(x_test)
    print ("原始数据各个特征属性的调整最小值:",ss.min_)
    print ("原始数据各个特征属性的缩放数据值:",ss.scale_)
    

    原始数据各个特征属性的调整最小值: [-1.19444444 -0.83333333 -0.18965517 -0.04166667]
    原始数据各个特征属性的缩放数据值: [0.27777778 0.41666667 0.17241379 0.41666667]

    #特征选择:从已有的特征中选择出影响目标值最大的特征属性
    #常用方法:{ 分类:F统计量、卡方系数,互信息mutual_info_classif
            #{ 连续:皮尔逊相关系数 F统计量 互信息mutual_info_classif
    #SelectKBest(卡方系数)
    
    #在当前的案例中,使用SelectKBest这个方法从4个原始的特征属性,选择出来3个
    ch2 = SelectKBest(chi2,k=3)
    #K默认为10
    #如果指定了,那么就会返回你所想要的特征的个数
    x_train = ch2.fit_transform(x_train, y_train)#训练并转换
    x_test = ch2.transform(x_test)#转换
    
    select_name_index = ch2.get_support(indices=True)
    print ("对类别判断影响最大的三个特征属性分布是:",ch2.get_support(indices=False))
    print(select_name_index)
    

    对类别判断影响最大的三个特征属性分布是: [ True False True True]
    [0 2 3]

    #降维:对于数据而言,如果特征属性比较多,在构建过程中,会比较复杂,这个时候考虑将多维(高维)映射到低维的数据
    #常用的方法:
    #PCA:主成分分析(无监督)
    #LDA:线性判别分析(有监督)类内方差最小,人脸识别,通常先做一次pca
    
    pca = PCA(n_components=2)#构建一个pca对象,设置最终维度是2维
    # #这里是为了后面画图方便,所以将数据维度设置了2维,一般用默认不设置参数就可以
    
    x_train = pca.fit_transform(x_train)#训练并转换
    x_test = pca.transform(x_test)#转换
    
    #模型的构建
    model = DecisionTreeClassifier(criterion='entropy',random_state=0)#另外也可选gini 
    #模型训练
    model.fit(x_train, y_train)
    #模型预测
    y_test_hat = model.predict(x_test) 
    
    #模型结果的评估
    y_test2 = y_test.reshape(-1)
    result = (y_test2 == y_test_hat)
    print ("准确率:%.2f%%" % (np.mean(result) * 100))
    #实际可通过参数获取
    print ("Score:", model.score(x_test, y_test))#准确率
    print ("Classes:", model.classes_)
    print("获取各个特征的权重:", end='')
    print(model.feature_importances_)
    

    准确率:96.67%
    Score: 0.9666666666666667
    Classes: [0 1 2]
    获取各个特征的权重:[0.93420127 0.06579873]

    N = 100  #横纵各采样多少个值
    x1_min = np.min((x_train.T[0].min(), x_test.T[0].min()))
    x1_max = np.max((x_train.T[0].max(), x_test.T[0].max()))
    x2_min = np.min((x_train.T[1].min(), x_test.T[1].min()))
    x2_max = np.max((x_train.T[1].max(), x_test.T[1].max()))
    
    t1 = np.linspace(x1_min, x1_max, N)
    t2 = np.linspace(x2_min, x2_max, N)
    x1, x2 = np.meshgrid(t1, t2)  # 生成网格采样点
    x_show = np.dstack((x1.flat, x2.flat))[0] #测试点
    
    y_show_hat = model.predict(x_show) #预测值
    
    y_show_hat = y_show_hat.reshape(x1.shape)  #使之与输入的形状相同
    print(y_show_hat.shape)
    y_show_hat[0]
    

    在这里插入图片描述

    #画图
    plt_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
    plt_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
    
    plt.figure(facecolor='w')
    ## 画一个区域图
    plt.pcolormesh(x1, x2, y_show_hat, cmap=plt_light) 
    # 画测试数据的点信息
    plt.scatter(x_test.T[0], x_test.T[1], c=y_test.ravel(), edgecolors='k', s=150, zorder=10, cmap=plt_dark, marker='*')  # 测试数据
    # 画训练数据的点信息
    plt.scatter(x_train.T[0], x_train.T[1], c=y_train.ravel(), edgecolors='k', s=40, cmap=plt_dark)  # 全部数据
    plt.xlabel(u'特征属性1', fontsize=15)
    plt.ylabel(u'特征属性2', fontsize=15)
    plt.xlim(x1_min, x1_max)
    plt.ylim(x2_min, x2_max)
    plt.grid(True)
    plt.title(u'鸢尾花数据的决策树分类', fontsize=18)
    plt.show()
    

    在这里插入图片描述

    #参数优化
    pipe = Pipeline([
                ('mms', MinMaxScaler()),
                ('skb', SelectKBest(chi2)),
                ('pca', PCA()),
                ('decision', DecisionTreeClassifier(random_state=0))
            ])
    
    # 参数
    parameters = {
        "skb__k": [1,2,3,4],
        "pca__n_components": [0.5,0.99],#设置为浮点数代表主成分方差所占最小比例的阈值,这里不建议设置为数值,思考一下?
        "decision__criterion": ["gini", "entropy"],
        "decision__max_depth": [1,2,3,4,5,6,7,8,9,10]
    }
    #数据
    x_train2, x_test2, y_train2, y_test2 = x_train1, x_test1, y_train1, y_test1
    #模型构建:通过网格交叉验证,寻找最优参数列表, param_grid可选参数列表,cv:进行几折交叉验证
    gscv = GridSearchCV(pipe, param_grid=parameters,cv=3)
    #模型训练
    gscv.fit(x_train2, y_train2)
    #算法的最优解
    print("最优参数列表:", gscv.best_params_)
    print("score值:",gscv.best_score_)
    print("最优模型:", end='')
    print(gscv.best_estimator_)
    #预测值
    y_test_hat2 = gscv.predict(x_test2)
    

    最优参数列表: {‘decision__criterion’: ‘gini’, ‘decision__max_depth’: 4, ‘pca__n_components’: 0.99, ‘skb__k’: 3}
    score值: 0.95
    最优模型:Pipeline(steps=[(‘mms’, MinMaxScaler(copy=True, feature_range=(0, 1))), (‘skb’, SelectKBest(k=3, score_func=<function chi2 at 0x000000073911B9D8>)), (‘pca’, PCA(copy=True, iterated_power=‘auto’, n_components=0.99, random_state=None,
    svd_solver=‘auto’, tol=0.0, whiten=False)), (‘decision’, DecisionTreeClass…split=2, min_weight_fraction_leaf=0.0,
    presort=False, random_state=0, splitter=‘best’))])

    #应用最优参数看效果
    mms_best = MinMaxScaler()
    skb_best = SelectKBest(chi2, k=3)
    pca_best = PCA(n_components=0.99)
    decision3 = DecisionTreeClassifier(criterion='gini', max_depth=4)
    #构建模型并训练模型
    x_train3, x_test3, y_train3, y_test3 = x_train1, x_test1, y_train1, y_test1
    x_train3 = pca_best.fit_transform(skb_best.fit_transform(mms_best.fit_transform(x_train3), y_train3))
    x_test3 = pca_best.transform(skb_best.transform(mms_best.transform(x_test3)))
    decision3.fit(x_train3, y_train3)
    
    print("正确率:", decision3.score(x_test3, y_test3))
    

    正确率: 0.9666666666666667

    #基于原始数据前3列比较一下决策树在不同深度的情况下错误率
    ### TODO: 将模型在训练集上的错误率也画在图中
    x_train4, x_test4, y_train4, y_test4 = train_test_split(x.iloc[:, :2], y, train_size=0.7, random_state=14)
    
    depths = np.arange(1, 15)
    err_list = []
    for d in depths:
        clf = DecisionTreeClassifier(criterion='entropy', max_depth=d, min_samples_split=10)#仅设置了这二个参数,没有对数据进行特征选择和降维,所以跟前面得到的结果不同
        clf.fit(x_train4, y_train4)
        
        ## 计算的是在训练集上的模型预测能力
        score = clf.score(x_test4, y_test4)
        err = 1 - score
        err_list.append(err)
        print("%d深度,测试集上正确率%.5f" % (d, clf.score(x_train4, y_train4)))
        print("%d深度,训练集上正确率%.5f\n" % (d, score))
    
    ## 画图
    plt.figure(facecolor='w')
    plt.plot(depths, err_list, 'ro-', lw=3)
    plt.xlabel(u'决策树深度', fontsize=16)
    plt.ylabel(u'错误率', fontsize=16)
    plt.grid(True)
    plt.title(u'决策树层次太多导致的拟合问题(欠拟合和过拟合)', fontsize=18)
    plt.show()
    

    1深度,测试集上正确率0.66667
    1深度,训练集上正确率0.57778
    2深度,测试集上正确率0.71429
    2深度,训练集上正确率0.71111
    3深度,测试集上正确率0.80000
    3深度,训练集上正确率0.75556
    4深度,测试集上正确率0.81905
    4深度,训练集上正确率0.75556
    5深度,测试集上正确率0.81905
    5深度,训练集上正确率0.71111
    6深度,测试集上正确率0.85714
    6深度,训练集上正确率0.66667
    7深度,测试集上正确率0.85714
    7深度,训练集上正确率0.66667
    8深度,测试集上正确率0.85714
    8深度,训练集上正确率0.66667
    9深度,测试集上正确率0.86667
    9深度,训练集上正确率0.71111
    10深度,测试集上正确率0.86667
    10深度,训练集上正确率0.71111
    11深度,测试集上正确率0.87619
    11深度,训练集上正确率0.66667
    12深度,测试集上正确率0.86667
    12深度,训练集上正确率0.71111
    13深度,测试集上正确率0.86667
    13深度,训练集上正确率0.71111
    14深度,测试集上正确率0.86667
    14深度,训练集上正确率0.71111

    在这里插入图片描述

    2. 鸢尾花数据特征属性比较

    import numpy as np
    import pandas as pd
    import matplotlib as mpl
    import matplotlib.pyplot as plt
    from sklearn.tree import DecisionTreeClassifier
    
    mpl.rcParams['font.sans-serif'] = [u'SimHei']
    mpl.rcParams['axes.unicode_minus'] = False
    
    iris_feature = u'花萼长度', u'花萼宽度', u'花瓣长度', u'花瓣宽度'
    path = 'datas/iris.data'  # 数据文件路径
    data = pd.read_csv(path, header=None)
    x_prime = data[list(range(4))]
    y = pd.Categorical(data[4]).codes
    
    #进行特征比较
    feature_pairs = [[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]
    plt.figure(figsize=(9, 6), facecolor='w')
    for i, pair in enumerate(feature_pairs):
    #获取数据
        x = x_prime[pair]
    #决策树学习
        clf = DecisionTreeClassifier(criterion='gini', max_depth=5)
        clf.fit(x, y)
        
        y_hat = clf.predict(x)
        score = clf.score(x, y)
        y2 = y.reshape(-1)
        c = np.count_nonzero(y_hat == y)   #统计预测正确的个数
        print ('特征:  ', iris_feature[pair[0]], ' + ', iris_feature[pair[1]])
        print ('\t预测正确数目:', c)
        print ('\t准确率: %.2f%%' % (score*100))
    
        N, M = 500, 500  # 横纵各采样多少个值
        x1_min, x2_min = x.min()
        x1_max, x2_max = x.max()
        t1 = np.linspace(x1_min, x1_max, N)
        t2 = np.linspace(x2_min, x2_max, M)
        x1, x2 = np.meshgrid(t1, t2)  # 生成网格采样点
        x_test = np.dstack((x1.flat, x2.flat))[0]  # 测试点
        
    
        cm_light = mpl.colors.ListedColormap(['#A0FFA0', '#FFA0A0', '#A0A0FF'])
        cm_dark = mpl.colors.ListedColormap(['g', 'r', 'b'])
        y_hat = clf.predict(x_test)  # 预测值
        y_hat = y_hat.reshape(x1.shape)  
        plt.subplot(2, 3, i+1)
        plt.pcolormesh(x1, x2, y_hat, cmap=cm_light)  # 预测值
        plt.scatter(x[pair[0]], x[pair[1]], c=y, edgecolors='k', cmap=cm_dark)  # 样本
        plt.xlabel(iris_feature[pair[0]], fontsize=10)
        plt.ylabel(iris_feature[pair[1]], fontsize=10)
        plt.xlim(x1_min, x1_max)
        plt.ylim(x2_min, x2_max)
        plt.grid()
        plt.title(u'准确率:%.2f%%' % (score * 100), fontdict={'fontsize':15})
    plt.suptitle(u'鸢尾花数据在决策树中两两特征属性对目标属性的影响', fontsize=18, y = 1)
    plt.tight_layout(2)
    plt.subplots_adjust(top=0.92)
    plt.show()
    

    特征: 花萼长度 + 花萼宽度
    预测正确数目: 127
    准确率: 84.67%
    特征: 花萼长度 + 花瓣长度
    预测正确数目: 148
    准确率: 98.67%
    特征: 花萼长度 + 花瓣宽度
    预测正确数目: 146
    准确率: 97.33%
    特征: 花萼宽度 + 花瓣长度
    预测正确数目: 146
    准确率: 97.33%
    特征: 花萼宽度 + 花瓣宽度
    预测正确数目: 145
    准确率: 96.67%
    特征: 花瓣长度 + 花瓣宽度
    预测正确数目: 149
    准确率: 99.33%

    在这里插入图片描述

    展开全文
  •  记外部力 F = −∇ P, Kass等将上式离散化后,对x(s)和y(s)分别构造两个对角阵的线性方程组,通过迭代计算进行求解。在实际应用中一般先在物体周围手动点出控制点作为Snakes模型的起始位置,然后对能量函数迭代...
  • Unity 之 打包参数 -- Player面板属性详解

    千次阅读 多人点赞 2021-10-24 10:28:34
    3.2 Standalone Player Options 部分 3.3 实例:代码设置启动尺寸 四,Splash Image(默认开场图像) 4.1 属性说明 4.2 证书对启动动画设置权限说明: 4.3 个人版使用示例 ,Other Setting(其他设置) 5.1 ...
  • Python tkinter - 第章 按钮控件(Button)属性

    万次阅读 多人点赞 2019-09-07 08:02:09
    光标形状说明3.3.6节。 5.2.9 default 取值为ACTIVE,NORMAL和DISABLED。 5.2.10 disabledforeground 按钮被禁止使用时,按钮上的文本的颜色。 import tkinter as tk root=tk.Tk() root.geometry('300x240') b1=tk....
  • 本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找。 声明:如果有人认为本文是复制粘贴+翻译而成的,敬请读本文最后的后记。 在Qt Designer中,提供了八大类可视化组件(也称为组件或...
  • 基于OpenCV的形状检测

    万次阅读 多人点赞 2019-05-14 16:25:24
    摘要 ...今天,我们将利用轮廓属性来实际标记和识别图像中的形状,就像本文顶部的图中一样。 OpenCV形状检测 在开始学习本教程之前,让我们快速回顾一下我们的项目结构: OpenCV形状检测壳 | — p...
  • (盒模型)个用来描述盒子位置、尺寸的属性: ①宽度 width、 ②高度 height、 ③内边距padding、 ④边框 border、 ⑤外边距 margin。
  • 控件的属性、事件和方法

    千次阅读 2021-05-13 10:24:04
    1.控件的常用属性含义与设定  在大部分的控件中,一些属性表示的意义是相同的。  基本格式: 〔对象名.〕属性名= 属性值 Name:对象的名称 它是对象的名称,该属性是所有的对象都具有的属性被用来唯一标识这一...
  • 形状文法--建筑风格分类总结

    千次阅读 2019-10-08 15:19:13
    Weights(标示某些规则属性的数量级大小 )。关于 shape的代数操作有原子操作,布尔操作,分割子部分间的关系(重叠,内含,无共同边界不连续的子部分)。相关欧几里得变换有:旋转,平移,映像,放缩比例等等以及这些...
  • PyQt5中的QtDesinger界面各类属性

    千次阅读 多人点赞 2020-08-25 22:19:51
    设置控件的格式 上面的控件中使用了QVBoxLayout、Label、Line Edit、Radiao Button、Push Button控件 当我们要查看或者修改类的属性时,只需要点击对象查看器中对应的类,并修改下面的相应的属性。 在上面例子中...
  • Excel 属性及方法

    千次阅读 2016-12-21 21:30:33
    属性值 鼠标形状 xlDefault 缺少型值,鼠标呈缺少形状 xlWait 等待型值,鼠标呈不断翻转的沙漏形状 xlNorthwestArrow 箭头型值,鼠标呈标准箭头形状 xlIBeam 文本型值,鼠标呈“I”字形以等待用户输入文本 ...
  • TypeScript(二)数据类型、任意值、类型推论、联合类型、接口(Interfaces、可选属性?:、任意属性、只读属性) 文章目录TypeScript(二)数据类型、任意值、类型推论、联合类型、接口(Interfaces、可选属性?:、...
  • 标签 描述 ...标签用于插入一个简单换符,...标签规定文本在什么时候适合添加换符,作用是建议浏览器可以在标记处断,但只是建议不一定是必定换行,还有根据整行文字的长度来定 <details> 和<su
  • 欢迎大家来到“Python从...代码实现 现在我们将糖尿病数据集划分为训练集和测试集,整个数据集共442,我们取前422数据用来线性回归模型训练,后20数据用来预测。其中取预测数据的代码为diabetes_x_temp[-20:]...
  • MATLAB 快速绘制曲线图的形状,粗细,颜色

    万次阅读 多人点赞 2021-04-05 09:05:34
    在写论文的时候,经常要用到Matlab绘制一些曲线,包括曲线的形状、粗细、颜色等,可以通过以下的piot函数实现。
  • 常用css样式大全以及css属性代码大全

    万次阅读 多人点赞 2020-10-09 12:52:17
    字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常) 行高 {line-height: ...
  • qss 属性介绍大全

    千次阅读 2018-11-22 11:26:00
    字体属性:(font) 大小 {font-size: x-large;}(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD 样式 {font-style: oblique;}(偏斜体) italic;(斜体) normal;(正常) 行高 {lin...
  • 分类模型类似于人类学习的方式,通过对历史数据或训练集的学习得到一个目标函数,再用该目标函数预测新数据集的未知属性。本章主要讲述分类算法基础概念,并结合决策树、KNN、SVM分类算法案例分析各类数据集,从而让...
  • opencv形状识别学习总结

    万次阅读 多人点赞 2016-03-16 13:20:30
     在图像处理中,Hough变换(霍夫变换)主要用来识别已知的几何形状,最常见的比如直线、线段 、圆形、椭圆、矩形等。如果要检测比较复杂的曲线图形,就需要利用广义霍夫变换。  霍夫变换的原理是根据参数空间的...
  • CSS常用属性速查表

    千次阅读 2016-03-20 01:34:56
    属性太多,对于我这种不深入WEB的人员,还是有个速查表方便多了,注意利用开头的目录,会不断更新的 CSS 字体属性(Font) 属性 描述 CSS  font 在一个声明中设置所有字体属性。 1  font-family 规定文本...
  • Android自定义控件提供颜色属性动态改变控件颜色 因为按钮的样式都是用xml文件实现的,因此颜色也是指定好的。后来想着别人要使用你的控件,颜色肯定需要和他们自己的应用搭配,所以如果要做好就需要提供一个属性,...
  • 获取图像属性、兴趣ROI区域及通道处理 [Python图像处理] 四.图像平滑之均值滤波、方框滤波、高斯滤波及中值滤波 [Python图像处理] .图像融合、加法运算及图像类型转换 [Python图像处理] 六.图像缩放、图像旋转、...
  • 两端对齐,末左对齐 段落缩进 避头尾集(严格) 八、形状工具 单击画面,输入参数,得到形状 8.1 矩形工具(M) 按住Shift键画出正方形,按住Shift + Alt画出以中心点为原点的正方形(同心矩形) 8.2 椭圆工具(L...
  • 创建一个长度为10并且除了第个值为1的空向量 (★☆☆) (提示: array[4]) Z = np.zeros(10) Z[4] = 1 print(Z) 7. 创建一个值域范围从10到49的向量(★☆☆) (提示: np.arange) Z = np.arange(10,50) print(Z) 8. ...
  • CSS属性大全

    万次阅读 多人点赞 2017-06-01 08:00:30
    字体属性:(font) 大小 font-size:x-large;(特大) xx-small;(极小) 一般中文用不到,只要用数值就可以,单位:PX、PD 样式 font-style:oblique;(偏斜体) italic;(斜体) normal;(正常) 行高 line-height:normal;...
  • ↑关注 + 星标~有趣的不像个技术号每晚九点,我们准时相约大家好,我是黄同学今天给大家介绍Series的创建方式和常用属性说明。1、list、...
  • 输出结果如下图所示,包括13个特征Normalization后的结果,y类标及划分为训练集和预测集的形状。 [[0.00000000e+00 1.80000000e-01 6.78152493e-02 ... 2.87234043e-01 1.00000000e+00 8.96799117e-02] [2....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,015
精华内容 8,406
热门标签
关键字:

形状的五行属性