记录我是如何转型大数据分析(二)——iris

浏览: 1495

记录我是如何转型大数据分析(二)——iris

在学习数据分析的过程中,iris数据算是我第一个接触的比较官方的数据来源。这是一个关于鸢尾花的数据,有五个属性:花瓣的长和宽、萼片的长和宽、花的三类。其中三类鸢尾花分别是:setosa, versicolor, virginica。

数据库下载链接(点击这里)或者可以直接百度iris data。


美丽的鸢尾花

这里我用到的python库有

1、pandas

2、matploylib

3、seaborn

4、sklearn

iris = pd.read_csv(file_path,header=None)
iris.head()


我这里的数据没有列名称,所以我自己手动更改了列名称

col_list = ['sepal length in cm','sepal width in cm','petal length in cm','petal width in cm','class']

iris.columns = col_list

#很喜欢describe这个功能,可以从宏观上很快的浏览我们的数据
iris.describe()


这是总体的数据,没有按照花的品种分类。我们可以看到总共有150条数据。

set(iris.loc[:,'class'])
返回数据:{'setosa', 'versicolor', 'virginica'}

接下来我想要把数据按照品种分开, 这里我用到了groupby

group = iris.groupby('class')
group = group.agg({'sepal length in cm':np.average,
'sepal width in cm':np.average,
'petal length in cm':np.average,
'petal width in cm':np.average})
print group


下面我们来看下每个品种,花瓣的长和宽的关系是怎样的

#筛选setosa的数据,并作散点图
a = iris[iris['class']=='setosa']
ax = a.plot(kind="scatter",x = 'sepal length in cm',y ='sepal width in cm',label = 'seotsa')

#筛选versicolor的数据,并作散点图
b = iris[iris['class']=='versicolor']
b.plot(kind="scatter",x = 'sepal length in cm',y ='sepal width in cm',color = 'red',label = 'versicolor',ax = ax)

#筛选virginica的数据,并作散点图
c = iris[iris['class']=='virginica']
c.plot(kind="scatter",x = 'sepal length in cm',y ='sepal width in cm',color = 'green',label =


同理,我们可以画出花萼的长和宽的关系,这里我用了另外一种方法:

sns.FacetGrid(iris,hue='class',size =5).map(plt.scatter,'petal length in cm','petal width in cm


sns.pairplot(iris,hue ='class')

将4个变量两两对比,可以看到蓝色,也就是setosa和其他两类很容易区分开来,但是红色和绿色有点不好区分开。


接下来我们想要看看,是否可以根据花瓣的长和宽、萼片的长和宽来判断属于哪一类品种。

mapping = {'setosa':1, 'versicolor':2, 'virginica':3}
iris['map'] = iris.loc[:,'class'].map(mapping)
iris.head()

这里我们将花的品种转化为1,2,3类,加入了新的一列map


我们将我们的数据分成两块,我是这样理解的,一块是放特征数据,一块是放判断结果

data = iris.iloc[:,0:4]

target = iris.iloc[:,5]
from sklearn.linear_model import LogisticRegression #逻辑回归
from sklearn.cross_validation import train_test_split#分类训练值,测试值
from sklearn.metrics import classification_report #分析报告
from sklearn.metrics import confusion_matrix #混淆矩阵
x_train,x_test,y_train,y_test = train_test_split(data,target)

lr =LogisticRegression(C=10)
lr.fit(data,target)

pre_y = lr.predict(x_test)
print classification_report(y_test,pre_y)


1号类型的,准确率和召回率都是100%,很容易区分,但是2,3类型,不能做到100%准确


cnf = confusion_matrix(y_test,pre_y)
plt.matshow(cnf)



之后我应该要做一个AUC,ROC分析,这一段我还没有完全理解,所以给自己留个坑,下次继续填。


最后放一个鸢(yuan)尾花的百度百科,至少做完一个项目,还是要了解做的是啥吧。

推荐 0
本文由 生活缺乏心跳 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册