python的交叉cross_validation

Python013

python的交叉cross_validation,第1张

python的cross_validation交叉

原来的

from sklearn import cross_validation

变成

from sklearn.model_selection import GridSearchCV

from sklearn.model_selection import train_test_split

即可。

先判断两条线段是否不平行(最好同时判断是否有交点并且不平行,因为浮点运算不精确),然后计算两条线段的交点。以下是C语言代码:

#include<stdio.h>

#include<math.h>

#define eps 1e-8

#define zero(x) (((x)>0?(x):-(x))<eps)

struct point{double x,y}

//计算交叉乘积(P1-P0)x(P2-P0)

double xmult(point p1,point p2,point p0){

return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y)

}

//判点是否在线段上,包括端点

int dot_online_in(point p,point l1,point l2){

return zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)<eps&&(l1.y-p.y)*(l2.y-p.y)<eps

}

//判两点在线段同侧,点在线段上返回0

int same_side(point p1,point p2,point l1,point l2){

return xmult(l1,p1,l2)*xmult(l1,p2,l2)>eps

}

//判两直线平行

int parallel(point u1,point u2,point v1,point v2){

return zero((u1.x-u2.x)*(v1.y-v2.y)-(v1.x-v2.x)*(u1.y-u2.y))

}

//判三点共线

int dots_inline(point p1,point p2,point p3){

return zero(xmult(p1,p2,p3))

}

//判两线段相交,包括端点和部分重合

int intersect_in(point u1,point u2,point v1,point v2){

if (!dots_inline(u1,u2,v1)||!dots_inline(u1,u2,v2))

return !same_side(u1,u2,v1,v2)&&!same_side(v1,v2,u1,u2)

return dot_online_in(u1,v1,v2)||dot_online_in(u2,v1,v2)||dot_online_in(v1,u1,u2)||dot_online_in(v2,u1,u2)

}

//计算两线段交点,请判线段是否相交(同时还是要判断是否平行!)

point intersection(point u1,point u2,point v1,point v2){

point ret=u1

double t=((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))

/((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x))

ret.x+=(u2.x-u1.x)*t

ret.y+=(u2.y-u1.y)*t

return ret

}

int main(void)

{

point u1,u2,v1,v2,ans

printf("请输入线段1的两个端点:\n")

scanf("%lf%lf%lf%lf",&u1.x,&u1.y,&u2.x,&u2.y)

printf("请输入线段2的两个端点:\n")

scanf("%lf%lf%lf%lf",&v1.x,&v1.y,&v2.x,&v2.y)

if (parallel(u1,u2,v1,v2)||!intersect_in(u1,u2,v1,v2)){

printf("无交点!\n")

}

else{

ans=intersection(u1,u2,v1,v2)

printf("交点为:(%lf,%lf)",ans.x,ans.y)

}

return 0

}

python的五个特点:

1、简单易学

python是一种代表简单主义思想的语言,阅读一个良好的python程序就感觉像是在读英语段落一样,尽管这个英语段的语法要求非常严格。python最大的优点之一是具有伪代码的本质,它使我们在开发python程序时,专注的是解决问题,而不是搞明白语言本身。

2、面向对象

python既支持面向过程编程,也支持面向对象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。

与其他主要的语言如C++和Java相比,python以一种非常强大又简单的方式实现面向对象编程。

3、可移植性

由于python的开源本质,它已经被移植在许多平台上。如果小心地避免使用依赖于系统的特性,那么所有python程序无需修改就可以在下述任何平台上运行,如:Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、QNX、VMS、Windows

CE,甚至还有PocketPC、Symbian以及Google基于Linux开发的android平台。

4、解释性

一个用编译性语言如C或C++写的程序可以从源文件转换到一个计算机使用的语言。这个过程通过编译器和不同的标记、选项完成。当运行程序的时候,连接转载器软件把程序从硬盘复制到内存中并且运行。

而python语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。在计算机内部,python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。

事实上,由于不再担心如何编译程序,如何确保连接转载正确地库等,这一切使得使用python变得更为简单。

5、开源

python是FLOSS之一。简单地说,你可以自由地发布这个软件的拷贝,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。

FLOSS是基于一个团体分享知识的概念,这是为什么python如此优秀的原因之一它是由一群希望看到一个更加优秀的python的人创造并经常改进这的。