Waiting~G

一起走过的日子

中国饮食文化:四大特色菜系

without comments

背景:今天为什么要介绍一下菜系,因为在社会中各种交际,点菜是非常麻烦的一件事情;也能看出一个人的情商高低;对原道而来的朋友,说出为什么带他来吃这家;对于社会各种交际,问吃什么的时候,不是人家真的无所谓,而是潜台词告诉你,我是做来做决策的,而不是来点菜的…..所以,每个人了解一下饮食文化,对大家是有利而无害的;当然,真正要对饮食文化有所深入了解,还是要多吃,多感受,才能真正的吃到精髓,好了,下面简单总结一下

 

菜系,也称帮菜,是指在选料、切配、烹饪等技艺方面,经长期演变而自成体系,具有鲜明的地方风味特色,并为社会所公认的中国饮食的菜肴流派。中国饮食文化的菜系,是指在一定区域内,由于气候、地理、历史、物产及饮食风俗的不同,经过漫长历史演变而形成的一整套自成体系的烹饪技艺和风味,并被全国各地所承认的地方菜肴。中国人讲究并善于烹饪,早在春秋战国时期,中国饮食文化中南北菜肴风味就表现出差异。到唐宋时,南食、北食各自形成体系。发展到清代初期时,鲁菜、川菜、粤菜、淮扬菜,成为当时最有影响的地方菜,被称作四大菜系。不同地区的人以炒、烧、煎、煮、蒸、烤和凉拌等烹饪方式,形成了不同的地方风味。

 

鲁菜

简介:起源于山东的齐鲁风味,是中国传统四大菜系(也是八大菜系)中唯一的自发型菜系(相对于淮扬、川、粤等影响型菜系而言),是历史最悠久、技法最丰富、难度最高、最见功力的菜系。总结的黄河中下游地区的“蒸、煮、烤、酿、煎、炒、熬、烹、炸、腊、盐、豉、醋、酱、酒、蜜、椒”奠定了中式烹调技法的框架;明清时期大量山东厨师和菜品进入宫廷,使鲁菜雍容华贵、中正大气、平和养生的风格特点进一步得到升华。

精髓:精于制汤和以汤调味(火功和高汤),烹调法以爆、炒、扒、熘最为突出,味型以成鲜为主

 

主要组成:孔府菜(山东省曲阜城内的孔府,官府等级菜)、济南菜(鲁西地方、济南、善于制汤)、胶东菜(烟台市福山区,善于海鲜

 

经典菜:一品豆腐、葱烧海参、三丝鱼翅、白扒四宝、糖醋黄河鲤鱼、九转大肠、油爆双脆、扒原壳鲍鱼、油焖大虾、醋椒鱼、糟熘鱼片、温炝鳜鱼片、芫爆鱿鱼卷、清汤银耳、木樨肉(木须肉)、胶东四大温拌、糖醋里脊、红烧大虾、招远蒸丸、清蒸加吉鱼、葱椒鱼、糖酱鸡块、油泼豆莛、诗礼银杏、奶汤蒲菜、乌鱼蛋汤、锅烧鸭、香酥鸡、黄鱼豆腐羹、拔丝山药、蜜汁梨球、砂锅散丹、布袋鸡、芙蓉鸡片、氽芙蓉黄管、阳关三叠、雨前虾仁、乌云托月、黄焖鸡块、锅塌黄鱼、奶汤鲫鱼、烧二冬、泰山三美汤、清汤西施舌、赛螃蟹、烩两鸡丝、象眼鸽蛋、云片猴头菇、油爆鱼芹、酥炸全蝎、西瓜鸡等。

 

川菜

 

简介:川菜即四川菜肴,川菜取材广泛,调味多变,菜式多样,口味清鲜醇浓并重,以善用麻辣调味著称,并以其别具一格的烹调方法和浓郁的地方风味,融会了东南西北各方的特点,博采众家之长,善于吸收,善于创新,享誉中外。近现代川菜兴起于明朝和民国两个时间段,并在新中国成立后得到创新发展。川菜以家常菜为主,高端菜为辅,取材多为日常百味,也不乏山珍海鲜。其特点在于红味讲究麻、辣、鲜、香;白味口味多变,包含甜、卤香、怪味等多种口味。

精髓:精于调味,六种基本味道:麻、辣、甜、咸、酸、苦,调出咸鲜、麻辣、糊辣、鱼香、姜汁、酸辣、糖醋、荔枝、甜香、椒盐、怪味、蒜泥、家常、陈皮、五香、烟香、香糟、鲜苦。还有无数复合味型。

 

主要组成:上河帮(即以川西成都、乐山为中心地区的蓉派川菜);小河帮(即以川南自贡为中心的盐帮菜, 同时包括宜宾菜、泸州菜和内江菜,)下河帮(即以重庆江湖菜、万州大碗菜为代表的重庆菜

经典菜:鱼香肉丝、宫保鸡丁、水煮鱼、水煮肉片、夫妻肺片、辣子鸡丁、麻婆豆腐、回锅肉、东坡肘子和东坡肉、蒜泥白肉等,其他经典菜品有:棒棒鸡、泡椒凤爪、灯影牛肉、廖排骨、口水鸡、酸辣土豆丝、香辣虾、尖椒炒牛肉、四川火锅、麻辣香水鱼、板栗烧鸡、酸辣海蜇头、辣子鸡。

 

粤菜

简介:粤菜即广东菜,是中国传统四大菜系、八大菜系之一,发源于岭南。在世界各地粤菜与法国大餐齐名,由于广东海外华侨数量占全国六成,因此世界各国的中菜馆多数是以粤菜为主。用料丰富,选料精细,技艺精良,清而不淡,鲜而不俗,嫩而不生,油而不腻。擅长小炒,要求掌握火候和油温恰到好处。粤菜在国外是中国的代表菜系。粤菜做法比较复杂,精细。粤菜是一种文化,是一种气氛,是一种渲染,是一种和谐,是一种民俗,是一种色彩,也是一种健康标准的体现。

 

 

精髓:尊重食材,以本味为主。

 

主要组成:广府菜(顺德用料广博奇杂,配料多而巧,口感偏重清、鲜、嫩、滑、爽、香)、潮州菜(发源潮汕、烹制海鲜见长,汤类、素菜、甜菜最具特色)、东江菜(也称客家菜,口感偏重“肥、咸、熟”)

 

经典菜:阿一鲍鱼、广州文昌鸡、明炉烤乳猪、新龙皇夜宴、半岛御品官燕、清蒸东星斑、挂炉烧鹅、生拆蟹肉烩海虎翅、雁南飞茶田鸭、潮州卤味。经典粤菜:白切鸡、红烧乳鸽、蜜汁叉烧、脆皮烧肉、上汤焗龙虾、鲍汁扣辽参、菜胆炖鱼翅、白灼象拔蚌、椰汁冰糖燕窝、麒麟鲈鱼、椒盐濑尿虾、蒜香骨、白灼虾、干炒牛河、广东早茶、老火靓汤、罗汉斋、广式烧填鸭、豉汁蒸排骨、菠萝咕噜肉、玫瑰豉油鸡、萝卜牛腩煲、潮州牛肉丸、潮汕鱼丸、生菜龙虾、鸳鸯膏蟹、潮州打冷、卤鹅肝、蚝烙、芙蓉虾、沙茶牛肉、客家酿豆腐、梅菜扣肉、盐焗鸡、猪肚包鸡、盆菜。

 

淮扬菜

简介:淮扬菜是中国传统四大菜系之一,发源于扬州、淮安。菜系充满淮、扬特点。原料多以水产为主,淮扬菜系大多以江湖河鲜为主料,以顶尖烹艺为支撑,以本味本色为上乘,以妙契众口为追求,雅俗共赏而不失其大雅,尤其是“和、精、清、新”的独特理念。淮扬菜始于春秋,兴于隋唐,盛于明清,素有“东南第一佳味,天下之至美”之美誉。淮扬菜选料严谨、因材施艺;制作精细、风格雅丽;追求本味、清鲜平和。淮扬菜十分讲究刀工,刀功比较精细,尤以瓜雕享誉四方。菜品形态精致,滋味醇和;在烹饪上则善用火候,讲究火功,擅长炖、焖、煨、焐、蒸、烧、炒;原料多以水产为主,注重鲜活,口味平和,清鲜而略带甜味。

 

精髓:精细,清淡平和,能调众口,南北皆宜,咸甜适中,烧焖见长,合乎营养。

 

组成:淮扬菜中,“扬”即扬菜,以扬州一带为代表的长江流域,“淮”即淮菜,以淮安一带为代表的淮河流域。扬州、淮安是国家历史文化名城。淮扬菜系指以扬州府和淮安府为中心的淮扬地域性菜系,形成于扬州、淮安等地区

 

经典菜:清炖蟹粉狮子头、大煮干丝、三套鸭、软兜长鱼、水晶肴肉、松鼠鳜鱼、梁溪脆鳝等。

 

 

 

Written by Skyma

七月 1st, 2018 at 4:44 下午

Posted in 游.名川大山

Tensorflow-cnn卷积神经网络

without comments

卷积神经网络 CNN (Convolutional Neural Network)

一、CNN在图片上的简单运用

 

比较流行的一种搭建结构是这样, 从下到上的顺序, 首先是输入的图片(image), 经过一层卷积层 (convolution), 然后在用池化(pooling)方式处理卷积的信息, 这里使用的是 max pooling 的方式. 然后在经过一次同样的处理, 把得到的第二次处理的信息传入两层全连接的神经层 (fully connected),这也是一般的两层神经网络层,最后在接上一个分类器(classifier)进行分类预测

二、CNN在图片上的简单运用


# -*- coding: utf-8 -*-
“””
————————————————-
File Name:
     cnn
Author :       skymaxu
date:
          2017/12/6

————————————————-
“””
__author__ = ‘skymaxu’

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets(‘MNIST_data’, one_hot=True)

def add_layer(inputs, in_size, out_size, active_function=None):
Weight = tf.Variable(tf.random_normal([in_size, out_size]))
biasis = tf.Variable(tf.zeros([1, out_size]) + 0.1)
Wx_plus_b = tf.matmul(inputs, Weight) + biasis
if active_function is None:
outputs = Wx_plus_b
else:
outputs = active_function(Wx_plus_b)
return outputs

def compute_accuracy(v_xs, v_ys):
global predcition
y_pre = sess.run(predcition, feed_dict={xs: v_xs, keep_prob: 1})
correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
result = sess.run(accuracy, feed_dict={xs: v_ys, ys: v_ys, keep_prob: 1})
return result

def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=0.1)
# inital=tf.random_normal()
return tf.Variable(initial)

def bia_variable(shape):
initial = tf.constant(0.1, shape=shape)
return tf.Variable(initial)

def conv2d(x, W):
# stride=[1,x_movement,y_movement,1]
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding=‘SAME’)

def max_pool_2x2(x):
return tf.nn.max_pool(x, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding=‘SAME’)

def compute_accuracy1(v_xs, v_ys):
global prediction
y_pre = sess.run(prediction, feed_dict={xs: v_xs})
# tf.argmax(vector, 1):返回的是vector中的最大值的索引号,
# 如果vector是一个向量,那就返回一个值,如果是一个矩阵,那就返回一个向量,
# 这个向量的每一个维度都是相对应矩阵行的最大值元素的索引号。

# cast(x, dtype, name=None)
# 将
x的数据格式转化成dtype.例如,原来x的数据格式是bool,
# 那么将其转化成float以后,就能够将其转化成0和1的序列。反之也可以

# tf.equal(A, B)
# 是对比这两个矩阵或者向量的相等的元素,如果是相等的那就返回
True,反正返回False,返回的值的矩阵维度和A是一样的
correct_prediction = tf.equal(tf.argmax(y_pre, 1), tf.argmax(v_ys, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
result = sess.run(accuracy, feed_dict={xs: v_xs, ys: v_ys})
return result

# define placeholder for inputs to network
keep_prob = tf.placeholder(tf.float32)
xs = tf.placeholder(tf.float32, [None, 784])
ys = tf.placeholder(tf.float32, [None, 10])
# print(x_image.shape) [n_samples,28,28,1]
x_image = tf.reshape(xs, [-1, 28, 28, 1])

# add output layer
# conv1 layer
# patch/kernel 5*5 in_size=1,out_size=32
W_conv1 = weight_variable([5, 5, 1, 32])
b_conv1 = bia_variable([32])
# output size 28*28*32
h_conv1 = tf.nn.relu(conv2d(x_image, W_conv1) + b_conv1)
# output size 14*14*32
h_pool1 = max_pool_2x2(h_conv1)

# conv2 layer
# patch/kernel 5*5 in_size=32,out_size=64
W_conv2 = weight_variable([5, 5, 32, 64])
b_conv2 = bia_variable([64])
# output size 14*14*64
h_conv2 = tf.nn.relu(conv2d(h_pool1, W_conv2) + b_conv2)
# output size 7*7*32
h_pool2 = max_pool_2x2(h_conv2)

# func1 layer
# in_size=7 * 7 * 64,out_size=1024
W_fc1 = weight_variable([7 * 7 * 64, 1024])
b_cf1 = bia_variable([1024])
h_pool2_flat = tf.reshape(h_pool2, [-1, 7 * 7 * 64])
h_fc1 = tf.nn.relu(tf.matmul(h_pool2_flat, W_fc1 + b_cf1))
h_fc1_drop = tf.nn.dropout(h_fc1, keep_prob)
# func2 layer
# in_size=1024,out_size=10
W_fc2 = weight_variable([1024, 10])
b_cf2 = bia_variable([10])
predcition = tf.nn.softmax(tf.matmul(h_fc1_drop, W_fc2 + b_cf2))

# the error between prediction and real data
# oss函数(即最优化目标函数)选用交叉熵函数。交叉熵用来衡量预测值和真实值的相似程度,如果完全相同,它们的交叉熵等于零
cross_entropy = tf.reduce_mean(-tf.reduce_sum(ys * tf.log(predcition), reduction_indices=[1]))
train_step = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)

sess = tf.Session()
sess.run(tf.global_variables_initializer())

for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={xs: batch_xs, ys: batch_ys, keep_prob: 0.5})
if i % 50 == 0:
print(compute_accuracy(mnist.test.images, mnist.test.labels))

*Ps:机器性能不好的,别乱运行,小心挂掉

 

三、Saver 保存读取

我们搭建好了一个神经网络, 训练好了, 肯定也想保存起来, 用于再次加载.用 Tensorflow 中的 saver 保存和加载.

PS:当前tensorflow仅仅能保存变量,并不能保存模型;

 

保存:

# -*- coding: utf-8 -*-
“””
————————————————-
File Name:
     saver
Author :       skymaxu
date:
          2017/12/13

————————————————-
“””
__author__ = ‘skymaxu’

import tensorflow as tf
import numpy as np

# save to file
W = tf.Variable([[1, 2, 3], [3, 4, 5]], dtype=tf.float32, name=‘Weight’)
b = tf.Variable([[1, 2, 3]], dtype=tf.float32, name=‘biasis’)

init = tf.global_variables_initializer()
saver = tf.train.Saver()

with tf.Session() as sess:
sess.run(init)
save_path = saver.save(sess, ‘model/save_net.ckpt’)
print(‘Save to path:’, save_path)

 

提取:

# -*- coding: utf-8 -*-
“””
————————————————-
File Name:
     saver
Author :       skymaxu
date:
          2017/12/13

————————————————-
“””
__author__ = ‘skymaxu’

import tensorflow as tf
import numpy as np


#restore
W = tf.Variable(np.arange(6).reshape((2, 3)), dtype=tf.float32, name=‘weight’)
b = tf.Variable(np.arange(3).reshape((1, 3)), dtype=tf.float32, name=‘biasis’)

saver = tf.train.Saver()
with tf.Session()  as sess:
saver.restore(sess, ‘model/save_net.ckpt’)
print(‘weight:’, sess.run(W))
print(‘biasis:’, sess.run(b))

 

Written by Skyma

一月 1st, 2018 at 1:36 下午

Posted in 学.机器学习

自然语言处理基础-词向量化

without comments

自然语言处理是机器学习的入门基础;作为特征工程的重要手段;必须要了解该知识,下面就从文本提取到出关键词(IFTDF),并对关键特征工程向量化详细描述整个过程;

 

首要条件:

两段文本信息:aitext.txt,aitest_bak.txt

停止词文档:stop_word.txt,该文档在百度上可以下载

 

第一步:对要处理的文本进行分词

原理:

import jieba

df = open(“aitext.txt”, encoding=‘utf8’, errors=‘ignore’)
df1 = df.read()  # openread放在一起,read只能用一次
df_test = df1[0:10]

df.close()
# print(df_test)

cf = open(“aitext_bak.txt”, encoding=‘utf8’, errors=‘ignore’)
cf1 = cf.read()
cf_test = cf1[0:10]

cf.close()
# print(cf_test)

df_ceshi = jieba.lcut(df_test)
cf_ceshi = jieba.lcut(cf_test)
cf_r = ” “.join(cf_ceshi)
df_r = ” “.join(df_ceshi)
print(cf_r)
print(df_r)

stop_words = open(“stop_word.txt”, encoding=‘utf8’, errors=‘ignore’)
stop_content = stop_words.read()  # 现实内容
stop_list = stop_content.splitlines()  # 将停用词表转化为list
stop_words.close()
# print(stop_list)

 

第二步: 使用scikit-learn工具处理 方案一,原理:使用scikit-learn向量化

 

from sklearn.feature_extraction.text import TfidfVectorizer

corpus = [cf_r, df_r]
print(‘—-corpus—-‘, corpus)
vector = TfidfVectorizer(stop_words=stop_list)  # 将停词引入模型
print(‘—-vector—-‘, vector)
tfidf = vector.fit_transform(corpus)  # 模型向量化
###每次词和TF-IDF的对应关系
wordlist = vector.get_feature_names()  # 获取词带模型中的所有词
print(‘—wordlist—‘, wordlist)
weightlist = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重
print(‘—weightlist—‘, weightlist)

 

方案二,原理:用scikit-learn的CountVectorizer类完成词频统计和向量化

from sklearn.feature_extraction.text import CountVectorizer

vectorizer = CountVectorizer(stop_words=stop_list)  # 该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频
transformer = TfidfTransformer()  # 该类会统计每个词语的tf-idf权值
tfidf = transformer.fit_transform(
vectorizer.fit_transform(corpus))  # 第一个fit_transform是计算tf-idf,第二个fit_transform是将文本转为词频矩阵
word = vectorizer.get_feature_names()  # 获取词袋模型中的所有词语
weight = tfidf.toarray()  # 将tf-idf矩阵抽取出来,元素a[i][j]表示j词在i类文本中的tf-idf权重

for i in range(len(weight)):
print(“…….第 %s 段文本的词语ti-idf权重………” % i)
for j in range(len(word)):
print(wordlist[j], weightlist[i][j])

 

结果如下格式:

 

—wordlist— [‘分类’, ‘标签’, ‘混蛋’, ‘第一种’]
—weightlist— [[ 0.50154891 0. 0.70490949 0.50154891]
[ 0.50154891 0.70490949 0. 0.50154891]]
…….第 0 段文本的词语ti-idf权重………
分类 0.501548907094
标签 0.0
混蛋 0.704909488931
第一种 0.501548907094
…….第 1 段文本的词语ti-idf权重………
分类 0.501548907094
标签 0.704909488931
混蛋 0.0
第一种 0.501548907094

 

 

Written by Skyma

十一月 12th, 2017 at 1:51 下午

Posted in 学.机器学习

机器学习——常见的算法和分类

without comments

第一种分类;按照标签分类

有监督学习:明确的给出每一个样本属于哪一个类别或者相关标签;常见的算法:分类回归算法

无监督学习:没有标签,不知道分为多少类,也不关心类是什么;常见的是聚类算法,k-means(一个聚类算法通常只需要知道如何计算相似度就可以开始工作了)

半监督学习:基本思想是利用数据分布上的模型假设建立学习器对未标签样例进行标签;强化学习

第二种分类:根据解决问题分类

分类和回归

聚类

标注

第三种分类:根据算法本质分类

生成模型(模糊判断 百分比 概率)    如:贝叶斯

判别模型 (判断属于哪个类型)   如:分类回归

————————————————————————

机器学习常见算法:

分类           c4.5    1993

聚类    K-means     1967

统计学习      svm         1995

关联统计    Apriori (FP-Growth) 1994

统计学习   EM              2000

链接挖掘    PageRank      1998

集装与推进     AdaBoost        1997

分类              KNN              1996

分类               Naive   Bayes        2001(http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html)

分类          CART           1984

 

 

 

 

Written by Skyma

十月 8th, 2017 at 6:51 上午

Posted in 学.机器学习