〖冰糖莲子〗
〖材料〗
干莲子300克,猪油50克。碱、冰糖、蜂糖各少许。
〖操作〗
1.锅内注入清水以淹没莲子为度,加碱,置武火上,下入莲子,待莲衣脱尽即离火,用温水冲洗干净,切去两头,抽去莲心。
2.莲子放入盅内,注入水,上笼用武火蒸熟取出。
3.另用一碗铺上猪油,将蒸熟的莲子码在碗里。冰糖捣碎撒在上面,用棉纸封口再上笼蒸烂。出笼,去棉纸,倒出汁,加蜂糖收浓,浇在莲子上即成。
〖功效〗
此菜清香、滑爽,有养心安神、补脾止泻的功效。
〖糖醋排骨〗
〖材料〗
猪肋排500克,大葱1根,鲜姜1小块,料酒2汤匙,精盐半汤匙,白糖3汤匙,酱油3汤匙,醋3汤匙,香油1汤匙,花生油150克。
〖操作〗
1.将猪肋排洗净,用刀将肋排拉成条两根肋骨为一条,然后再将每条剁成1寸半长的段。
2.大葱去根洗净,切成细末;鲜姜去皮洗净,切成细末。
3.将炒锅置火上烧热,倒入花生油。待油热后放入排骨,炸至颜色微黄捞出。
4.将锅中油倒去,将排骨倒入,加精盐、酱油、白糖、料酒和适量清水用旺火烧开,再用中文火烧至汤汁较少且粘稠时,加入醋、姜末和葱末翻炒几下,改用旺火,见汤汁浓稠时停火,淋上香油翻炒均匀,盛入盘中晾凉即可。
〖功效〗
味道鲜香浓厚,甜酸可口。
〖酸菜鸡丝汤〗
〖材料〗
鸡脯肉100克、泡青菜100克、鲜菜心25克、精盐1克、胡椒粉2克、味精适量、蛋清豆粉25毫升、特制清汤750毫升。
〖操作〗
1.将鸡脯肉切成长8厘米、粗0.2厘米的细丝,用清水漂去血水,用蛋清豆粉、精盐码味上浆;鲜菜心整理备用;将泡青菜切成细丝。
2.锅置火上烧水至沸时将上料抖散下锅,待鸡丝发白时捞起备用。
3.另换锅洗净置火上,放入泡青菜、特制清汤,加入精盐、胡椒粉、味精调味,将香味熬出后,下鲜菜心、鸡丝,起锅倒入汤碗中即成。
实拍:农村小伙在城市手把手教你腌制老家酸菜···酸菜在我们的饮食中可以是开胃小菜、下饭菜,也可以作为调味料来 *** 菜肴。冬季的菜园子相对单调,在一些地区用酸菜来储藏蔬菜是种传统的做法。不同于东北的大白菜做的酸菜,老家的酸菜多选用青色的蔬菜叶子来做,比如说大头菜叶,萝卜缨子,大白菜等。看到有人晒酸菜炖肉,小编也忍不住了,去了菜市场!不过在菜市场找了一圈,没有找到那种大青叶子的蔬菜,于是买了些水白菜来做。
剥掉青色的叶子
这种嫩菜心直接可以吃,做酸菜不是特别好,有点浪费,留下来炖肉吃
剥好的青叶子
放手冲洗
洗好的叶子
放入适量的盐
加入开水
水汽缭绕
叶子渐渐烫熟
用筷子搅拌一下
继续加开水
叶子已经差不多熟了
盖上盖子
剩下的就交给时间了
过几天酸菜有酸味了再给大家拍拍酸菜炖肉···
在他乡几十年,最能让人想起的便是家乡的美食,而这些美食中最让人日夜思念的往往是那一坛一坛的腌菜。
每到冬天来临之时,我的家乡大西南边远山区的菜市上,总能看见用几只木桶装着的酸菜,黄亮黄亮的,飘着清酸之香。酸菜一般论斤两而卖,上街买菜的主妇们,往往是自己伸出胖乎乎的被冻的白里透红的双手,去桶里挑选出色相好且柄叶宽大肥厚的酸菜,然后像拧洗脸毛巾一样,拧出酸菜里的泡菜水(减少斤两)再过秤。
图片来自百度
家乡的酸菜是由青菜(芥菜的一种)腌制而成,腌制 *** 与北方熟渍酸菜的 *** 有些类似,但不撒盐;与川西平原的泡制法就大不相同了。川西平原的做法是将青菜洗净晾干之后,直接进入泡菜坛子长时间(多为周年以上)泡制而成。家乡酸菜则是将青菜洗净,入沸水锅里汆水捞出,放进大木桶或木盆里,然后去加工豆腐的地方提一桶滚烫的膏水(用石膏点出的豆腐水),加入木桶里,每天加一次。在冬季一般只需五至七天便可发酵成熟烹制上桌了。
中国做酸菜的历史由来已久。传说周文王和孔子都是酸菜的爱好者。北魏贾思勰在《齐民要术》中说的“菘咸菹法”,就是用白菜渍成酸菜较早的文字记载。诗人龚自珍曾把贫贱之酸菜与江南高贵的杨梅和笋拿来媲美写过一首诗:“杭州梅舌酸复甜,有笋名曰虎爪尖。笔以苏州小橄榄,可敌北方冬菘腌。”其中“北方冬菘腌”就是北方的酸菜,说明酸菜的名气在清朝的时候就很大了。
清人袁枚在《随园食单》也记有酸菜一款:冬菜心风干微腌,加糖、醋、芥。带卤入罐中,微加秋油亦可。席间醉饱之余,食之醒脾解酒。其实诗人袁枚的酸菜,是用浙江杭州、台州产的仿冬菜即卷心菜为原料做成的,其腌制发酵的 *** 与京冬菜、津冬菜、川冬菜基本相似,只是各自所加的调味料有所不同而已。清人童岳荐编撰《调鼎集》中收有一款酸菜:“冬菜心微腌,加糖、醋、芥末,带卤入坛中,微加酱油亦可。又用整白菜下滚水一焯,不可太熟取起,先用时收贮,有煮熟面汤,其味至酸,将焯菜装坛,面汤灌之,淹密为度,十日可用。若无面汤,以饭汤做酸亦可。又将白菜披开、切断,入滚水一焯,取起,要取得快才好,即刻入坛,用焯菜之水灌下,随手将坛口封固,勿令泄气,次日可开用,菜既酸、脆,汁亦不浑。”显然,此款酸菜的做法发扬光大了袁老先生那款酸菜的做法,并且此法沿用至今。
有一年春天,诗人李亚伟(与我同乡)从成都打 *** 问我酸菜的做法。我说当前的主要任务是,你必须找到一家专门卖豆腐的店子,然后像讨口子(地方语,乞丐)一样向老板讨要膏水。我说如果你还想吃忆苦思甜的豆腐渣可同时讨要。至于用什么菜来做,我说若没有青菜,用大白菜、小白菜、萝卜缨、飘儿白等来做都可以,关键是要膏水。事后我想,成都有那么多美女和荤东西,如今突然想吃素的不能再素的酸菜,他是不是活得太油腻了哦。
在家乡,酸菜有许多种吃法,最常见的是“炝炒酸菜”, 这也是小时候常看见母亲的一种炒法,即把酸菜切成细末,然后用力挤干水汁,在净锅里炒干水分起锅待用。放少许菜油六成热时,放干辣椒节炸成偷油婆背颜色(地方俗语,蟑螂),旋即放入酸菜快炒,出香味时,加盐、少许味精、葱起锅而成。那酸香、辣脆、爽口,舀一瓢盖在一大碗刚从甑子蒸出来的白米饭上,唏哩呼噜的猛扒几口,塞满口咀嚼,快乐下咽,好吃得像卵形(地方语,好吃极了),纵使你有多少肥、多少腻和多少恨都统统给你一解而光。
图片来自百度
在北京生活了这么多年,常常会想到家乡酸菜那一口。开始是用北方的酸白菜来做汤解馋,后来在菜市偶然发现一种江浙那边运过来卖的酸菜,其味道虽然十分接近家乡的酸菜,但始终差那么一种特别的酸和淡淡的情。有一年冬天,我在北京东四这边买了些芥菜,去附近豆腐店要了些膏水,自己做了一次酸菜,结果大获成功。于是立马请在北京的家乡朋友过来品尝,在大家兴奋得眼睛发亮而赞不绝口之余,我想家乡的酸菜是最解乡愁的。
值得拿出来一说的是,家乡有一位江湖上人称昌哥的兄弟,县城里屈指可数的红白喜事总管。人矮小但结实的挺着啤酒肚皮,以至于一哥们建议他在自己的肚皮上钉上一颗钉子,把下身要垮要垮的裤子提上去挂在钉子上。昌哥能吃善喝且做得一手上好的酸菜,除了“炝炒酸菜”外,昌哥的拿手还有“酸菜炒肉丝”、“酸菜炖老鸭”、“酸菜酥肉汤”、“酸菜红豆汤”以及“酸菜炒饭”等等。特别是香脆爽口的“酸菜炒饭”,正如袁老先生所说的,常常会让你酒足之后,还想饭饱。说实在的,在上世纪80年代,我从他那里偷到过不少做菜的绝活。
有一年春节回老家,半斤白酒下肚,昌哥说:二毛,你爱吃酸菜饭,我去给你炒。于是我跟随昌哥进了厨房,只见昌哥将自己泡的酸菜拧一把起来,切成细末,再将细末拧干水份,先净锅炒干酸菜末的水分铲起,放熟菜油五成热时,下干辣椒节炝煳,再下酸菜末炒香,捡去煳辣椒不要,下冷饭与酸菜混炒出香;最后见昌哥撒了一把葱花,铲了两铲就起锅每人舀了一碗。趁热我猛扒了两口,那塞满口腔的酸脆之香混合着的煳辣之香和米饭之香,至今还在我的鼻腔里游荡。
酸菜虽贫贱,但家乡的酸菜在当地是能登大雅之堂的,年夜饭上的最后一道一般都是解腻开胃的酸菜。还有在红白喜事的席面上,酸菜也为必上之菜。迄今为止,家乡农村的人家都还有在春节来临之前自己做酸菜的习惯,并常作为礼物相互登门赠送。
超爱的开胃酸菜,家里一把青菜就能做,一学就会,任谁都会爱上炝炒酸菜
1.把酸菜切成细末,然后用力挤干水汁,在净锅里炒干水分起锅待用。
2.放少许菜油六成热时,放干辣椒节炸成偷油婆背颜色(地方俗语,蟑螂),旋即放入酸菜快炒,出香味时,加盐、少许味精、葱起锅而成。
禧福素食自制酸菜鲍菇丁
(主材:酸菜 鲍菇 辅料:指天椒一颗 姜末少量 调料:素耗油 食用油)
个人喜欢用春菜或者雪里红做酸菜口感更加爽口 嫩脆
推荐大家超好吃
我喜欢酸菜,小时候农村家里的大宅院住着的老人冬天很喜欢做搽菜,用的是冬天的水菜,割下后太阳晒个2.3天后,用一把盐慢慢撮,完了弄个干净无水的坛封起来。
1个月到1年期间慢慢吃,但是有个缺点,就是开封了要快点吃完,要不然就是臭封搽菜了。虽然还很回味,但是据说腌制品吃多对身体不好,所以想吃酸菜咋办!
我们客家人对吃的还真的是有办法,我们龙川很多人喜欢早餐吃猪肉汤,而我对配的酸菜,(我们叫水碌菜)很是钟情!
我的做法也是从姐姐妈妈那里学的,特别感恩,因为这道菜一年四季都适合,而且还特别环保!(建议做酸菜青菜:芥菜 春菜 雪里红 菜心 水菜)
做法如下:
准备青菜清一遍洗一遍,晾干水分更好吃
准备泡的容器(带盖更好) 盐50克 白醋一瓶 100℃开水(适合你的容器的量即可)
做法:
1:青菜放入容器
2:在青菜上铺一层盐
3:一边倒煮好开水一边倒白醋浸过青菜面就好,要保证每颗青菜吃饱开水盖上盖子(没有盖子套上袋子)2小时后到3天内吃完
温馨提示:盐和醋根据自己喜欢酸或者咸适量增减,不会影响效果!
酸菜一晚出来的成品图如下:
- 很漂亮,很简单吧!孩子也超爱吃,我用来做包子饺子馅,也用来做单品菜和给客人开胃小菜!很健康的下饭菜。
禧福酸菜素包
超级好吃的素包用的就是图1的配方馅料!你也可以试试!很好吃!
实在不想自己做也可以找我,我很期待!
作者:禧福素食
美食推荐:干煸蘑菇,蘑菇炒菜心,酸菜炒猪血的做法蘑菇炒菜心
食材:蘑菇(鲜蘑)200克、小白菜200克、盐3克、味精2克、黄酒2克、香油3克、色拉油50克
做法;
1.将蘑菇洗净,去蒂,入沸水锅中略氽,捞出沥干后对开切
2.小白菜去掉外帮取其心洗净后对开切
3.放入热油锅(加20克油中)加精盐适量,味精少许翻炒熟透
4.再起锅整齐排于盘内
5.锅架旺火上加油30克烧热,放入蘑菇煸炒片刻
6.再加入绍酒、剩余精盐、剩余味精烧至入味
7.最后淋入麻油,起锅盖在菜心上即可
酸菜炒猪血
食材:猪血450克、酸菜80克、韭菜40克、蒜末10克、盐1/2小匙、糖少许、鸡粉1/2小匙、胡椒粉1/4小匙、米酒少许
做法:
1.猪血切条状泡水沥干;韭菜洗净切段,大蒜切成蒜末
2.酸菜洗净切丝,放入少量水泡5分钟沥干
3.取锅烧热后倒入3大匙油,放入蒜末爆香
4.加入猪血条略炒一下,再放入韭菜段、酸菜丝
5.加入所有的调味料拌炒入味即可出锅
干煸蘑菇
食材:蘑茹、蚝油、酱油、味精、白糖、黄酒、黑胡椒粉、洋葱、彩椒
做法:
1.碗中先放入蚝油、酱油,再放入味精、白糖和黄酒搅匀备用
2.将蘑菇洗净切成条状,洋葱和彩椒洗净切成块
3.炒勺热油放入蘑菇煸炒,炒至微黄时撒入少许黑胡椒粉
4.炒至黑胡椒出香味时烹入碗汁用旺火炒匀
5.倒入洋葱煸炒数下,放入彩椒煸炒,把汤汁用旺火煸炒至干
6.等汤汁吸附在蘑菇上,收净汤汁后再翻炒数下即可出锅
又到了冬天腌菜季节,奶奶教我腌制的酸菜,能储存一年不坏!爽脆、醇香,特别好吃。我奶奶今年92岁,每年冬天都要腌制几罐,半个月就可以开罐吃,一年不会坏。
我是广东人,奶奶教我腌制的酸菜是用芥菜做的,北方人的酸菜用大白菜,二种酸菜口感不同。可能自己从小就吃奶奶做的酸菜,总觉得芥菜腌制的酸菜比大白菜的要脆爽,口感醇香,大白菜因为梗少叶多,腌制出来酸菜没这么脆爽。当然,每个地方习惯不同,北方的酸菜也好吃
南方用芥菜腌制酸菜会用整颗芥菜,菜心特别脆嫩,好吃的酸菜需要注意以下几点。之一:挑选芥菜的时候要用新鲜,叶子没有虫眼,不发黄。第二:芥菜梗要多,叶子少,这样的酸菜好吃。第三:过开水不能煮,如果煮,酸菜会烂,失去口感。接下来分享做法:
步骤1:新鲜的芥菜用刀切去根部,用水冲洗泥沙,然后清水浸泡5分钟。
步骤2:洗净的芥菜放阴凉处,把芥菜叶通过风吹至菜叶变蔫。
步骤3:锅里倒入适量的水,煮沸,然后放盐煮至溶解。
步骤4:放入芥菜,用煮沸的盐水,把芥菜全部烫一次。这个是的芥菜变软。
步骤5:把芥菜放入瓦罐,然后把刚刚烫好芥菜水倒入瓦罐,要把芥菜浸没。然后盖上盖子,放在阴凉通风的地方,千万别摇动。芥菜上面可以放一个石头,可以让芥菜可以浸泡在水里。
步骤6:这是腌制了7天的酸菜,开盖之后,酸菜水变多,有一股醇香飘出。开盖之后的酸菜,要尽快吃完,不能存放太久。没有开盖的酸菜,可以储存一年都会不坏。
【sourcehe温馨小贴士】1.腌制酸菜的盐,更佳比例为500克芥菜20克盐。2.芥菜要放阴凉通风的地方让芥菜变蔫,晒太阳酸菜不会太脆爽。3.开封的芥菜如果没有及时吃完,可以放冰箱,这样就不会坏。如果你也喜欢吃酸菜,千万不能错过,自己腌制的酸菜太好吃了。
日常记录——菜心和香菜日常记录。
今天早上我去市场买菜回来,洗了菜心和香菜,还洗了鱼肉好几遍,去掉了血水。
·切了些香菜,准备放在酸菜鱼里。我还切了辣椒、姜蒜,准备用。我用盐、味精、生粉和酱油腌了一下鱼肉,为了入味。家里没有料酒了,我用了米酒代替,还加了点油来锁住水分。
·先炒姜、泡椒,炒香后加入酸菜,加点盐调味。炒一会儿后加入开水煮,放入调好的料汁和醋,煮一会儿后把酸菜捞出来,再放入腌好的鱼片,煮开后捞出即可。
·最后放点蒜、小米椒、辣椒粉和香菜,淋上热油就可以开动了。
先喝了口汤,味道酸爽开胃。然后炒了菜心,蒜爆香后放入菜心,加盐调味,炒熟后就可以上桌了。现在准备开吃了。今天的菜系非常好吃,特别下饭。
感谢您的观看,记得点赞关注哦!
菜园里的菜心多得吃不赢,曾姨全部割回来做酸菜,小小文也闲不住{"rich_content":{"text":"","spans":null},"video":{"vid":"v028b0120000c14fslgortd1e9q49kjg","duration":363.29,"width":854,"height":480,"file_size":48814771,"thumb":{"web_uri":"tos-cn-p-0000/a9a0075dcabb4acab28409771415a2bb","width":640,"height":360,"image_type":null,"mimetype":null,"encrypt_web_uri":null,"secret_key":null,"encrypt_algorithm":null,"extra":null},"video_size":{"high":{"duration":363.29,"file_size":45498106,"w":854,"h":480},"normal":{"duration":363.29,"file_size":34682279,"w":640,"h":360},"ultra":{"duration":363.29,"file_size":45485834,"w":854,"h":480}},"is_encrypted":null,"sp":null,"md5":"a311a22e953959da76679f055edf76c3","tos_key":null,"secret_key":null,"encrypt_algorithm":null,"extra":null}}
平时倒掉的淘米水还可以这样利用 腌菜很美味说到腌制,最早人类会腌制是为了保存食物的鲜期,因此,采用在腌制上的调味品,如:盐、糖、醋、酒都是具有防腐功能性。当然,后来出现了雪柜,如今腌制发酵的功能还单纯只限于“防腐,保鲜”,那应该早就被淘汰了。古人类最早着手腌制,原意也许是储存,可是,却没预期到,食物在发酵过程中,冲击出来的乳酸菌、氨基酸都在在提升了食物的美味关系。所以,纵然经过千年历史的淘旧换新,人们依然情牵腌制品。
腌制调味品挑选:
盐:与精盐、碘盐说不。盐是最天然、廉价的腌制调味品,唯一要确定的是,无论是用在腌制上,甚至是平常食用盐都不应该选用“精盐”。精盐?何谓精盐,即化学盐也!碘盐也不要买。建议采购的是:矿物盐、海盐、火山盐。
糖:凡是“过度精制”的食品都不鼓励食用,所以糖腌建议用:砂糖、冰糖。
醋:市面上的醋有白米醋、化学醋(一般中文都只写白醋,但马来文就会注明是化学醋)和老陈醋。当然,化学醋一定不在食用或腌制的考量上,因它乃非天然品,酸性偏尖锐及过酸,泡制出来的成品酸味刺鼻,尤其哮喘病者一食用,有引发哮喘之可能性,需慎选。
鼓励用洗米水取代醋
淘米水取代醋
淘米水中含有丰富的蛋白质和维生素、矿物质,将淘米水静置两天就会发酵得很厉害,用淘米水发酵青菜做泡菜,发酵速度会更快、发酵效果会更好。
淘米水的腌泡法:材料:青菜、淘米水、食盐。
做法:清洗青菜脏掉的部分后晾干,装入罐子,然后倒入加了盐的淘米水,盖紧盖子,过两天就可以食用。
淘米水腌的营养价值会更高,而且速度更快。洗米水泡出来的酸豆角是自然发酵而成,这样的酸豆角不伤胃。如果用醋或者其他东西腌出来的东西吃起来会对胃等不好。
腌制容器:
陶瓷:首选陶瓷瓮或陶罐。陶的厚度可避阳光紫外线,光照会破坏发酵品内的乳酸菌,以前老一辈会将腌制品藏在床底下,因它是唯一光照无法触及的地方。另外,陶能隔热,纵然室外温度高,但陶内会保持在一个恒温下,腌制品也就不会感受到外来气温的转变。
玻璃:次选是玻璃,更好选用雾化玻璃或者不透明玻璃,要能隔离阳光。
塑胶:不能用塑胶。除了一些专为食品设计的塑胶发酵桶。但,更佳还是黑、褐及土制的陶瓮。
陶制的瓮是更佳的腌制容器。它可隔绝阳光,也常保室温。
发酵期:腌制逾21天减低亚硝酸
一般上,腌制品不鼓励多吃的理由是“高盐”或者“高糖”会带来身体机能上的危害。例如盐腌,在高盐腌制的情况下,会产生高亚硝酸,会造成痛风、高血压及肾脏病人的负担,所以不鼓励多吃。但是,若是在腌制的时间上拿捏准确,经过时间的转化,腌制超过21天的盐腌食品,亚硝酸相对的会减低,然后,它会发酵并制造出乳酸菌。
一股上,酸菜腌制7至10天就可食用,但是这期间的它仍处于“亚硝风”(即亚硝酸高峰期),更好是等到它发酵21天才食用,它的营养值会提高,对身体细胞的破坏相对减低。(注:21天发酵法是针对所有的腌制品。)
盐腌安心吃法:温水浸泡过夜
怎么处理腌菜?大马比较常接触的酸菜、梅菜,咸菜、榨菜、菜干都是用盐发酵的食品,食用前,更好是将它切细,多次的滤洗,然后用大约摄氏50度的温水浸泡过夜。很多人对于长时间浸泡法不太认同,觉得这会让腌菜失了风味,其实这个想法大错特错,因浸泡只是冲淡腌菜中的咸味(即它的亚硝酸钠),它的风味依然存在,不信,你试一下。切记,不可以用超过90度的热水浸泡,因它会破坏腌制品中的乳酸菌。
腌蒜米助于杀菌
疫情期间大家劳动少没出汗,吃多了油腻的食物,身体负担沉重,应该多吃腌蒜米来帮助消化和吸收以便达到杀菌和提高免疫力。
蒜米鳞茎中含有丰富的蛋白质、低聚糖和多糖类等 。蒜米还具有多方面的生物活性,如防治心血管疾病、抗肿瘤及抗病原微生物等,长期食用可起到防病保健作用。
腌菜正确操作法:白泡沫是好现象
很多人将菜买回来,清洗后就直接用盐搓洗,然后就马上放进瓶子里腌制,这不但会影响成品的口感,也会产生一些坏处,甚至失败。
正确的操作:
1.蔬菜先用盐搓干水、晾干之后,再用温水冲掉盐分,然后再拿到太阳底下曝晒,这个过程可以保持蔬菜瓜果的爽脆。
2.晒干了的蔬果,如果是用水做腌制,切记一定是要用煮沸过的水。
3.腌制过程中,切记不要频密打开让室外的空气流入,因这可能会引来外来细菌,打乱发酵的节奏,也可能会破坏成品。
4.发酵过程中看到起白泡沫,这是好现象。意味着,内里有活性细菌,它的乳酸菌和微生物正在成长,白色泡沫是发酵良好,若是出现五颜六色就要将这些泡沫捞出,再重新加盐、醋(或糖)重新再腌泡,让它重新再发酵,只是发酵期必须重新计算。
腌菜的水一定要盖过食材,传统的做法是会在顶部用重物压碾确保每一条菜都完美浸泡在水中。然后水也一定要是沸水、搁冷才可以用来做腌菜。
小知识:
厨余环保再制:菜头菜尾别浪费
现代人常丢用的蔬菜头部、尾部,甚至是有虫洞的菜叶、老菜梗都可以收起来,收到一定的数量,用淘米水做成酸菜、咸菜或者菜干,腌成可以炒一碟湖南人爱吃的“婆婆菜”。
厨房的老菜菜梗都可以用来腌制类似罐头菜心,菜心就是莴笋,本地少见,我们可以用油麻菜梗、生菜梗、包菜梗,切片用酱油做腌制。
不美的菜叶用盐搓洗后,拿去晒,晒到它抓在手里有一点脆感的程度就可以收藏起来,或者可以直接剁碎,浸泡洗过,再用油和其它的辣椒、蒜米做调味,炒了、搁冷了再装在玻璃瓶里,这就是酱菜了。
数据分析简单例子数据挖掘是一种技术,它将传统的数据分析 *** 与处理大量数据的复杂算法相结合。
数据挖掘是在大型数据存储库中,自动地发现有用信息的过程。数据挖掘技术用来探查大型数据库,发现先前未知的有用模式。
数据挖掘(Data mining)是一个跨学科的计算机科学分支。它是用人工智能、机器学习、统计学和数据库的交叉 *** 在相对较大型的数据集中发现模式的计算过程。
数据挖掘的基本任务
- 利用分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等 *** ,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。
数据挖掘建模过程
- 定义挖掘目标、数据取样 、数据探索 、数据预处理、挖掘建模、模型评价
Python 数据挖掘相关扩展库
- Numpy 提供数组支持,以及相应的高效的处理函数
- Scipy 提供矩阵支持,以及矩阵相关
- Matplotlib 强大的数据可视化工具,作图库
- Pandas 强大、灵活的数据分析和探索工具
- StatsModels 统计建模和计量经济学,包括描述统计,统计模型估计和推断
- Scikit-Learn 支持回归、分类、聚类等强大的机器学习库
- Keras 深度学习库,用于建立神经 *** 以及深度学习模型(Anaconda Navigator)
- Gensim 用来做文本主题模型的库,文本挖掘可能用到
- Numpy 基本操作 (数组的操作)
import numpy as np
a= np.array(<2,0,1,5>)
print a,type(a)
print (a<:3>)
print (a.min())
a.sort()
print (a)
b=np.array(<<1,2,3>,<4,5,6>>)
print b
print (b*b)
print (b**2)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
<2 0 1 5> <type 'numpy.ndarray'>
<2 0 1>
0
<0 1 2 5>
<<1 2 3>
<4 5 6>>
<< 1 4 9>
<16 25 36>>
<< 1 4 9>
<16 25 36>>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- Scipy (矩阵预算,线性代数、积分、插值、FFT、信号处理、图像处理等的计算)
求解线性方程组和数值积分
from scipy.optimize import fsolve # 导入求解方程组的函数
def f(x):
x1=x<0>
x2=x<1>
return <2*x1-x2**2-1,x1**2-x2-2>
result=fsolve(f,<1,1>)
print (result)
from scipy import integrate #导入积分函数
def g(x):
return (1-x**2)**0.5
pi_2,err=integrate.quad(g,-1,1)
print (pi_2*2),err
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
< 1.91963957 1.68501606>
3.14159265359 1.00023567207e-09
- 1
- 2
- 3
- Matplotlib 作图的基本代码
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,1000) #作图的变量自变量
y=np.sin(x)+1
z=np.cos(x**2)+1
plt.figure(figsize=(8,4)) #设置图像大小
plt.plot(x,y,label='$ sin x+1 $',color='red',linewidth=2) #作图,设置标签、线条颜色,宽度
plt.plot(x,z,'b--',label='$cos x^2+1$')
plt.xlabel('Time(s) ')
plt.ylabel('Volt')
plt.title('A Simple Example')
plt.ylim(0,2.2)
plt.legend() #显示图例
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
np.random.seed(1000)
y=np.random.standard_normal(20)
print y
x=range(len(y))
print x
plt.plot(x,y)
plt.plot(y.cumsum(),'b',lw=1.5)
plt.plot(y.cumsum(),'ro',lw=1.5)
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
<-0.8044583 0.32093155 -0.02548288 0.64432383 -0.30079667 0.38947455
-0.1074373 -0.47998308 0.5950355 -0.46466753 0.66728131 -0.80611561
-1.19606983 -0.40596016 -0.18237734 0.10319289 -0.13842199 0.70569237
1.27179528 -0.98674733>
<0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19>
- 1
- 2
- 3
- 4
- 5
- 6
np.random.seed(2000)
#y1=np.random.standard_normal((20,2))
y=np.random.standard_normal((20,2)).cumsum(axis=0)
print y
plt.figure(figsize=(9,4))
plt.subplot(121)
plt.plot(y<:,0>,lw=1.5,label='1st')
plt.plot(y<:,0>,'ro')
plt.grid(True)
plt.legend(loc=0)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('1st Data Set')
plt.subplot(122)
plt.bar(np.arange(len(y)),y<:,1>,width=0.5,color='g',label='2nd')
plt.grid(True)
plt.legend(loc=0)
plt.axis('tight')
plt.xlabel('index')
plt.ylabel('value')
plt.title('2st Data Set')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
<< 1.73673761 1.89791391>
<-0.37003581 1.74900181>
< 0.21302575 -0.51023122>
< 0.35026529 -1.21144444>
<-0.27051479 -1.6910642 >
< 0.93922398 -2.76624806>
< 1.74614319 -3.05703153>
< 1.52519555 -3.22618757>
< 2.62602999 -3.14367705>
< 2.6216544 -4.8662353 >
< 3.67921082 -7.38414811>
< 1.7685707 -6.07769276>
< 2.19296834 -6.54686084>
< 1.18689581 -7.46878388>
< 1.81330034 -7.11160718>
< 1.79458178 -6.89043591>
< 2.49318589 -6.05592589>
< 0.82754806 -8.95736573>
< 0.77890953 -9.00274406>
< 2.25424343 -9.51643749>>
Text(0.5,1,u'2st Data Set')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- pandas 的简单例子 (数据的读取、处理和探索) series(类似一维数组) dataFrame(相当于一张二维的表格,每一列都是一个Series)
import numpy as np
import pandas as pd
df=pd.DataFrame(<10,20,30,40>,columns=<'numbers'>,index=<'a','b','c','d'>)
df
- 1
- 2
- 3
- 4
numbersa10b20c30d40
df.index
- 1
Index(, dtype='object')
- 1
- 2
df.columns
- 1
Index(, dtype='object')
- 1
- 2
print df.ix<'c'>
print df.ix<<'a','d'>>
print df.ix
print df.sum()
print df.apply(lambda x:x**2)
- 1
- 2
- 3
- 4
- 5
numbers 30
Name: c, dtype: int64
numbers
a 10
d 40
numbers
b 20
c 30
numbers 100
dtype: int64
numbers
a 100
b 400
c 900
d 1600
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
df<'floats'>=(1.5,2.5,3.5,4.5)
df
- 1
- 2
numbersfloatsa101.5b202.5c303.5d404.5
df<'names'>=pd.DataFrame(<'Yves','Guido','Feild','Fance'>,index=<'a','b','c','d'>)
print df
df=df.append(pd.DataFrame({'numbers':100,'floats':5.75,'names':'Henry'},index=<'Z'>))
print df
- 1
- 2
- 3
- 4
numbers floats names
a 10 1.5 Yves
b 20 2.5 Guido
c 30 3.5 Feild
d 40 4.5 Fance
floats names numbers
a 1.50 Yves 10
b 2.50 Guido 20
c 3.50 Feild 30
d 4.50 Fance 40
Z 5.75 Henry 100
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
df<'floats'><'a'>
- 1
1.5
- 1
- 2
type(df)
- 1
pandas.core.frame.DataFrame
- 1
- 2
df<'numbers'>
- 1
a 10
b 20
c 30
d 40
Z 100
Name: numbers, dtype: int64
- 1
- 2
- 3
- 4
- 5
- 6
- 7
type(df<'numbers'>)
- 1
pandas.core.series.Series
- 1
- 2
import matplotlib.pyplot as plt
df<'numbers'>.cumsum().plot(style='r',lw=2.) #画numbers这列的累加图形
plt.xlabel('date')
plt.ylabel('value')
plt.show()
- 1
- 2
- 3
- 4
- 5
import pandas as pd #Series和DataFrame数据结构
s=pd.Series(<1,2,3>,index=<'a','b','c'>)
print s
d=pd.DataFrame(<<1,2,3>,<4,5,6>>,columns=<'a','b','c'>)
print d
d2=pd.DataFrame(s)
print d2
print d.head()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
a 1
b 2
c 3
dtype: int64
a b c
0 1 2 3
1 4 5 6
0
a 1
b 2
c 3
a b c
0 1 2 3
1 4 5 6
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- StatsModels 注重数据的统计建模分析,使pytohn有R语言的味道, StatsModels支持与pandas进行数据交互,强大的数据挖掘组合
from stat *** odels.tsa.stattools import adfuller as ADF
from pandas.core import datetools
import numpy as np
ADF(np.random.rand(100)) #返回的结果是ADF值和p值 单位根和概率值
- 1
- 2
- 3
- 4
- 5
(-11.253758305760554,
1.6868652157937374e-20,
0L,
99L,
{'1%': -3.4981980821890981,
'10%': -2.5825959973472097,
'5%': -2.8912082118604681},
31.149412019471782)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- Scilit-Learn包括数据预处理、分类与预测、回归、聚类和模型分析
from sklearn import datasets #导入数据集
iris=datasets.load_iris() #加载数据集
print(iris.data.shape)
from sklearn import svm #建立线性SVM分类器
clf=svm.LinearSVC()#建立线性SVM分类器
clf.fit(iris.data,iris.target)# 用数据训练模型
clf.predict(<<5.0,3.6,1.5,0.25>>)#训练好模型之后,输入新的数据进行预测
clf.coef_ #训练好模型的参数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
(150L, 4L)
array(<< 0.18424073, 0.451224 , -0.80793865, -0.45071743>,
< 0.0533189 , -0.89005676, 0.40352144, -0.93828342>,
<-0.85072726, -0.98671105, 1.38088737, 1.86538905>>)
- 1
- 2
- 3
- 4
- 5
- 6
- Keras 搭建神经 *** 自编码器、循环神经 *** 、递归神经 *** 、卷积神经 ***
- Gensim 处理语言方面的任务,如文本相似度计算、word2Vec等
数据探索
通过检验数据集的数据质量、绘制图表、计算某些特征量等手段,对样本数据集的结构和规律进行分析的过程。
有助于选择合适的数据预处理和建模 *** 。
数据质量分析
缺失值、异常值、不一致的值、重复数据及含有特殊符号的数据(#、¥、*)
缺失值的处理
- 缺失值产生的原因
- 1、信息暂时无法获取,或者信息获取代价太大
- 2、信息被遗漏
- 3、属性值不存在
- 缺失值的影响
- 数据挖掘建模将丢失大量有用信息; 数据挖掘模型表现出的不确定性更加显著,规律难把握;包含空值的数据建模,导致不可靠的输出。
- 缺失值分析
- 统计分析的 *** ,可以得到含有缺失值属性的个数。 删除记录、插补、不处理
异常值分析
简单统计量分析(更大值,最小值)、箱形图分析
import pandas as pd
catering_sale='data3/catering_sale.xls' #餐饮数据
data=pd.read_excel(catering_sale,index_col=u'日期') #日期列为索引列
data.head()
- 1
- 2
- 3
- 4
销量日期2015-03-0151.02015-02-282618.22015-02-272608.42015-02-262651.92015-02-253442.1
data.describe()
- 1
销量count200.000000mean2755.214700std751.029772min22.00000025%2451.97500050%2655.85000075%3026.125000max9106.440000
import pandas as pd
catering_sale = 'data3/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
import matplotlib.pyplot as plt #导入图像库
plt.figure() #建立图像
p = data.boxplot(return_type='dict') #画箱线图,直接使用DataFrame的 ***
x = p<'fliers'><0>.get_xdata() # 'flies'即为异常值的标签
y = p<'fliers'><0>.get_ydata()
y.sort() #从小到大排序,该 *** 直接改变原对象
#用annotate添加注释
#其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。
for i in range(len(x)):
if i>0:
plt.annotate(y, xy = (x,y), xytext=(x+0.05 -0.8/(y-y
else:
plt.annotate(y, xy = (x,y), xytext=(x+0.08,y))
plt.show() #展示箱线图
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
数据特征分析
分布分析(定量数据的分布分析,定性数据的分布分析)、对比分析、统计量分析、周期性分析、贡献度分析、相关性分析,了解数据的规律和趋势,为数据挖掘的后续环节提供支持。
统计量分析:集中趋势度量(均值、中位数、众数);离中趋势度量(极差、标准差、变异系数、四分位间距);
# 统计量分析
import pandas as pd
catering_sale = 'data3/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
data = data<(data > 400)&(data < 5000)> #过滤异常数据
statistics = data.describe() #保存基本统计量
statistics.loc<'range'> = statistics.loc<'max'>-statistics.loc<'min'> #极差 更大值减最小值
statistics.loc<'var'> = statistics.loc<'std'>/statistics.loc<'mean'> #变异系数 比较两个或多个具有不同单位或波动幅度的数据集的离中趋势
statistics.loc<'dis'> = statistics.loc<'75%'>-statistics.loc<'25%'> #四分位数间距 值越大说明变异程度越大
print(statistics)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
销量
count 195.000000
mean 2744.595385
std 424.739407
min 865.000000
25% 2460.600000
50% 2655.900000
75% 3023.200000
max 4065.200000
range 3200.200000
var 0.154755
dis 562.600000
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
贡献度分析:A1-A7总盈利占85%
import pandas as pd
#初始化参数
dish_profit = 'data3/catering_dish_profit.xls' #餐饮菜品盈利数据
data = pd.read_excel(dish_profit, index_col = u'菜品名')
data = data.copy()
data.sort_values(ascending = False)
import matplotlib.pyplot as plt #导入图像库
plt.figure()
data.plot(kind='bar')
plt.ylabel(u'盈利(元)')
p = 1.0*data.cumsum()/data.sum()
p.plot(color = 'r', secondary_y = True, style = '-o',linewidth = 2)
plt.annotate(format(p<6>, '.4%'), xy = (6, p<6>), xytext=(6*0.9, p<6>*0.9), arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2")) #添加注释,即85%处的标记。这里包括了指定箭头样式。
plt.ylabel(u'盈利(比例)')
plt.show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
相关性分析:相关系数
r=∑
n
i=1
(x
i
?x
ˉ
)(y
i
?y
ˉ
)
∑
n
i=1
(x
i
?x
ˉ
)
2
∑
n
i=1
(y
i
?y
ˉ
)
2
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
√
r=∑i=1n(xi?xˉ)(yi?yˉ)∑i=1n(xi?xˉ)2∑i=1n(yi?yˉ)2
import pandas as pd
catering_sale = 'data3/catering_sale_all.xls' #餐饮数据,含有其他属性
data = pd.read_excel(catering_sale, index_col = u'日期')
print data.head()
data.corr() #相关系数矩阵,即给出了任意两款菜式之间的相关系数
print data.corr() #只显示“百合酱蒸凤爪”与其他菜式的相关系数
print data.corr(data) #计算“百合酱蒸凤爪”与“翡翠蒸香茜饺”的相关系数
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
百合酱蒸凤爪 翡翠蒸香茜饺 金银蒜汁蒸排骨 乐膳真味鸡 蜜汁焗餐包 生炒菜心 铁板酸菜豆腐 香煎韭菜饺 香煎罗卜糕 \
日期
2015-01-01 17 6 8 24 13.0 13 18 10 10
2015-01-02 11 15 14 13 9.0 10 19 13 14
2015-01-03 10 8 12 13 8.0 3 7 11 10
2015-01-04 9 6 6 3 10.0 9 9 13 14
2015-01-05 4 10 13 8 12.0 10 17 11 13
原汁原味菜心
日期
2015-01-01 27
2015-01-02 13
2015-01-03 9
2015-01-04 13
2015-01-05 14
百合酱蒸凤爪 1.000000
翡翠蒸香茜饺 0.009206
金银蒜汁蒸排骨 0.016799
乐膳真味鸡 0.455638
蜜汁焗餐包 0.098085
生炒菜心 0.308496
铁板酸菜豆腐 0.204898
香煎韭菜饺 0.127448
香煎罗卜糕 -0.090276
原汁原味菜心 0.428316
Name: 百合酱蒸凤爪, dtype: float64
0.00920580305184
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
数据预处理
数据预处理占到60%, 数据清洗、数据集成(属性冗余问题),数据变换、数据规约。
数据清洗主要包括:缺失值处理(均值、中位数、众数插补,最近临插补、回归 *** 、插值法)、异常值处理(删除、视为缺失值、平均值修正)。
y=a
0
+a
1
x+a
2
x
2
+...+a
n?1
x
n?1
y=a0+a1x+a2x2+...+an?1xn?1
lagrange插值法:
#拉格朗日插值代码
#拉格朗日插值代码
import pandas as pd #导入数据分析库Pandas
from scipy.interpolate import lagrange #导入拉格朗日插值函数
inputfile = 'data4/catering_sale.xls' #销量数据路径
outputfile = './sales.xls' #输出数据路径
data = pd.read_excel(inputfile) #读入数据
#data<(data < 400) | (data > 5000)> = None #过滤异常值,将其变为空值
row_indexs = (data < 400) | (data > 5000) #得到过滤数据的索引
data.loc
#自定义列向量插值函数
#s为列向量,n为 *** 值的位置,k为取前后的数据个数,默认为5
def ployinterp_column(s, n, k=5):
y = s #取数
y = y
return lagrange(y.index, list(y))(n) #插值并返回拉格朗日插值结果
#逐个元素判断是否需要插值
for i in data.columns:
for j in range(len(data)):
if (data.isnull())
# data
data.loc
data.to_excel(outputfile) #输出结果,写入文件
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
数据归一化:
#数据规范化
import pandas as pd
import numpy as np
datafile = 'data4/normalization_data.xls' #参数初始化
data = pd.read_excel(datafile, header = None) #读取数据
(data - data.min())/(data.max() - data.min()) #最小-更大规范化
(data - data.mean())/data.std() #零-均值规范化
data/10**np.ceil(np.log10(data.abs().max())) #小数定标规范化
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
012300.0780.5210.6020.286310.144-0.600-0.5210.224520.095-0.4570.468-0.128330.0690.5960.6950.105440.1900.5270.6910.205150.1010.4030.4700.248760.1460.4130.4350.2571
连续属性离散化:
等宽离散化: 将属性的值域分成相同宽度的区间
等频离散化:间相同数量的记录放进每个区间
基于聚类
#-*- coding: utf-8 -*-
import pandas as pd
datafile = 'data4/discretization_data.xls' #参数初始化
data = pd.read_excel(datafile) #读取数据
data = data.copy()
print data.head(10)
k = 4
#等宽离散化
d1 = pd.cut(data, k, labels = range(k)) #等宽离散化,各个类比依次命名为0,1,2,3
#等频率离散化
w = <1.0*i/k for i in range(k+1)> #<0.0, 0.25, 0.5, 0.75, 1.0>
w = data.describe(percentiles = w)<4:4+k+1> #使用describe函数自动计算分位数
w<0> = w<0>*(1-1e-10)
d2 = pd.cut(data, w, labels = range(k))
from sklearn.cluster import KMeans #引入KMeans
kmodel = KMeans(n_clusters = k, n_jobs = 4) #建立模型,n_jobs是并行数,一般等于CPU数较好
kmodel.fit(data.values.reshape((len(data), 1))) #训练模型
c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0) #输出聚类中心,并且排序(默认是随机序的)
w = c.rolling(window=2,center=False).mean().iloc<1:> #相邻两项求中点,作为边界点
#w = pd.DataFrame.rolling(window=2,center=False).mean()
w = <0> + list(w<0>) +
d3 = pd.cut(data, w, labels = range(k))
def cluster_plot(d, k): #自定义作图函数来显示聚类结果
import matplotlib.pyplot as plt
plt.figure(figsize = (8, 3))
for j in range(0, k):
plt.plot(data
plt.ylim(-0.5, k-0.5)
return plt
cluster_plot(d1, k).show()
cluster_plot(d2, k).show()
cluster_plot(d3, k).show()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
0 0.056
1 0.488
2 0.107
3 0.322
4 0.242
5 0.389
6 0.246
7 0.330
8 0.257
9 0.205
Name: 肝气郁结证型系数, dtype: float64
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
#主成分分析 降维
import pandas as pd
#参数初始化
inputfile = 'data4/principal_component.xls'
outputfile = './dimention_reducted.xls' #降维后的数据
data = pd.read_excel(inputfile, header = None) #读入数据
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
print pc *** ponents_ #返回模型的各个特征向量
print pca.explained_variance_ratio_ #返回各个成分各自的方差百分比
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
<< 0.56788461 0.2280431 0.23281436 0.22427336 0.3358618 0.43679539
0.03861081 0.46466998>
< 0.64801531 0.24732373 -0.17085432 -0.2089819 -0.36050922 -0.55908747
0.00186891 0.05910423>
<-0.45139763 0.23802089 -0.17685792 -0.11843804 -0.05173347 -0.20091919
-0.00124421 0.80699041>
<-0.19404741 0.9021939 -0.00730164 -0.01424541 0.03106289 0.12563004
0.11152105 -0.3448924 >
<-0.06133747 -0.03383817 0.12652433 0.64325682 -0.3896425 -0.10681901
0.63233277 0.04720838>
< 0.02579655 -0.06678747 0.12816343 -0.57023937 -0.52642373 0.52280144
0.31167833 0.0754221 >
<-0.03800378 0.09520111 0.15593386 0.34300352 -0.56640021 0.18985251
-0.69902952 0.04505823>
<-0.10147399 0.03937889 0.91023327 -0.18760016 0.06193777 -0.34598258
-0.02090066 0.02137393>>
< 7.74011263e-01 1.56949443e-01 4.27594216e-02 2.40659228e-02
1.50278048e-03 4.10990447e-04 2.07718405e-04 9.24594471e-05>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
pca=PCA(3)
pca.fit(data)
low_d=pca.transform(data)
low_d
- 1
- 2
- 3
- 4
array(<< 8.19133694, 16.90402785, 3.90991029>,
< 0.28527403, -6.48074989, -4.62870368>,
<-23.70739074, -2.85245701, -0.4965231 >,
<-14.43202637, 2.29917325, -1.50272151>,
< 5.4304568 , 10.00704077, 9.52086923>,
< 24.15955898, -9.36428589, 0.72657857>,
< -3.66134607, -7.60198615, -2.36439873>,
< 13.96761214, 13.89123979, -6.44917778>,
< 40.88093588, -13.25685287, 4.16539368>,
< -1.74887665, -4.23112299, -0.58980995>,
<-21.94321959, -2.36645883, 1.33203832>,
<-36.70868069, -6.00536554, 3.97183515>,
< 3.28750663, 4.86380886, 1.00424688>,
< 5.99885871, 4.19398863, -8.59953736>>)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
挖掘建模
分类与预测(回归分析、决策树(ID3)、神经 *** 、贝叶斯 *** 、支持向量机)
聚类分析
关联规则(Apriori)
时序模式
偏差检测
ID3算法核心是在决策树的各级节点上,使用信息增益 *** 作为属性的选择标准,来帮助确定生成每个节点时所采用的合适属性。
I(s
1
,s
2
,...,s
m
)=?∑
i=1
m
P
i
log
2
(P
i
)
I(s1,s2,..., *** )=?∑i=1mPilog2(Pi)
m表示属性值的个数,s
i
si 是某个属性值的样本个数, P
i
Pi 可以用 s
i
S
siS,S是s样本数据的 *** 。
总信息熵:销售数量高的数据18,低的数据16, I(18,16)=?18
34
log
2
18
34
?16
34
log
2
16
34
I(18,16)=?1834log21834?1634log21634
是否周末属性:是的条件下,销售高的记录11,低为3,表示(11,3);不是的条件下,销售高记录7,低为13,表示(7,13);
是否周末的属性的信息熵增益:I(18,16)?(14
34
I(11,3)+20
34
I(7,13))
I(18,16)?(1434I(11,3)+2034I(7,13))
#使用ID3决策树算法预测销量高低
import pandas as pd
#参数初始化
inputfile = 'data5/sales_data.xls'
data = pd.read_excel(inputfile, index_col = u'序号') #导入数据
print data.head()
#数据是类别标签,要将它转换为数据
#用1来表示“好”、“是”、“高”这三个属性,用-1来表示“坏”、“否”、“低”
data = 1
data = 1
data = 1
data = -1
print data.head()
x = data.iloc<:,:3>.as_matrix().astype(int) #前三个属性的矩阵
y = data.iloc<:,3>.as_matrix().astype(int) #销量的矩阵
from sklearn.tree import DecisionTreeClassifier as DTC
dtc = DTC(criterion='entropy') #建立决策树模型,基于信息熵
dtc.fit(x, y) #训练模型
#导入相关函数,可视化决策树。
#导出的结果是一个dot文件,需要安装Graphviz才能将它转换为pdf或png等格式。
from sklearn.tree import export_graphviz
x = pd.DataFrame(x)
from sklearn.externals.six import StringIO
x = pd.DataFrame(x)
with open("tree.dot", 'w') as f:
f = export_graphviz(dtc, feature_names = x.columns, out_file = f)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
天气 是否周末 是否有促销 销量
序号
1 坏 是 是 高
2 坏 是 是 高
3 坏 是 是 高
4 坏 否 是 高
5 坏 是 是 高
天气 是否周末 是否有促销 销量
序号
1 -1 1 1 1
2 -1 1 1 1
3 -1 1 1 1
4 -1 -1 1 1
5 -1 1 1 1
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
value=<0,6>代表0个低,6个高
Apriori算法: 找更大K项频繁集 没一项的支持度 p(a)=7/10, 支持度为0.2(支持度计数为2)
#使用Apriori算法挖掘菜品订单关联规则
import pandas as pd
from apriori import * #apriori函数
inputfile = 'data5/menu_orders.xls'
outputfile = './apriori_rules.xls' #结果文件
data = pd.read_excel(inputfile, header = None)
print data.head(11)
print(u'\n转换原始数据至0-1矩阵...')
ct = lambda x : pd.Series(1, index = x
b = map(ct, data.as_matrix()) #用map方式执行
data = pd.DataFrame(list(b)).fillna(0) #实现矩阵转换,空值用0填充
print(u'\n转换完毕。')
del b #删除中间变量b,节省内存
support = 0.2 #最小支持度 同时发生的概率
confidence = 0.5 #最小置信度 A发生则B发生的概率
ms = '---' #连接符,默认'--',用来区分不同元素,如A--B。需要保证原始表格中不含有该字符
find_rule(data, support, confidence, ms).to_excel(outputfile) #保存结果
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
0 1 2 3
0 a c e NaN
1 b d NaN NaN
2 b c NaN NaN
3 a b c d
4 a b NaN NaN
5 b c NaN NaN
6 a b NaN NaN
7 a b c e
8 a b c NaN
9 a c e NaN
转换原始数据至0-1矩阵...
转换完毕。
正在进行第1次搜索...
数目:6...
正在进行第2次搜索...
数目:3...
正在进行第3次搜索...
数目:0...
结果为:
support confidence
e---a 0.3 1.000000
e---c 0.3 1.000000
c---e---a 0.3 1.000000
a---e---c 0.3 1.000000
a---b 0.5 0.714286
c---a 0.5 0.714286
a---c 0.5 0.714286
c---b 0.5 0.714286
b---a 0.5 0.625000
b---c 0.5 0.625000
b---c---a 0.3 0.600000
a---c---b 0.3 0.600000
a---b---c 0.3 0.600000
a---c---e 0.3 0.600000