算法导论 Algorithms 01 - 线性回归 Simple linear regression
来源:互联网 发布:excel怎样求和筛选数据 编辑:程序博客网 时间:2024/05/07 15:04
/*假设工资是6000、那麽经过迴歸分析计算、预期花红是2386.055908。*/#import <Foundation/Foundation.h></p>@interface cLmCalculator : NSObject{ NSInteger p_mSalary; NSInteger p_mBonus; NSInteger p_mTotalSalary; NSInteger p_mTotalBonus; NSInteger p_mTimesSalaryWithBonus; NSInteger P_mSquareSalary; NSInteger p_mSquareBonus;float p_mCountA;float p_mCountB;}-(id)initLmCalculator;-(int)sumSalary: (NSInteger)mInputSalary;-(int)sumBonus : (NSInteger)mInputBonus;-(int)TimesSalaryWithBonus: (NSInteger)mInputSalary andSalary:(NSInteger)mInputBonus;-(int)SquareSalary: (NSInteger)mInputSalary;-(int)SquareBonus: (NSInteger)mInputBonus;-(float)CountingA: (NSInteger)mInputSalary andInputBonus:(NSInteger)mInputBonus andTimesSalaryWithBonus:(NSInteger)mTimesSalaryWithBonusandSquareSalary:(NSInteger)mInputSquareSalaryandSquareBonus:(NSInteger)mInputSquareBonus;-(float)CountingB: (NSInteger)mInputSalary andInputBonus:(NSInteger)mInputBonus andTimesSalaryWithBonus:(NSInteger)mTimesSalaryWithBonusandSquareSalary:(NSInteger)mInputSquareSalaryandSquareBonus:(NSInteger)mInputSquareBonus;-(void) printResult;@property(nonatomic, readwrite) NSInteger p_mSalary;@property(nonatomic, readwrite) NSInteger p_mBonus;@property(nonatomic, readwrite) NSInteger p_mTotalSalary;@property(nonatomic, readwrite) NSInteger p_mTotalBonus;@property(nonatomic, readwrite) NSInteger p_mTimesSalaryWithBonus;@property(nonatomic, readwrite) NSInteger P_mSquareSalary;@property(nonatomic, readwrite) NSInteger p_mSquareBonus;@property(nonatomic, readwrite) float p_mCountA;@property(nonatomic, readwrite) float p_mCountB;@end @implementation cLmCalculator @synthesize p_mSalary;@synthesize p_mBonus;@synthesize p_mTotalSalary;@synthesize p_mTotalBonus;@synthesize p_mTimesSalaryWithBonus;@synthesize P_mSquareSalary;@synthesize p_mSquareBonus;@synthesize p_mCountA;@synthesize p_mCountB; -(id)initLmCalculator{ self = [super init]; p_mSalary = 0; p_mBonus = 0; p_mTotalSalary = 0; p_mTotalBonus = 0; p_mTimesSalaryWithBonus = 0; P_mSquareSalary = 0; p_mSquareBonus = 0;p_mCountA = 0;p_mCountB = 0;}-(void) printResult { NSLog(@"==========Implementation Result=========="); NSLog(@"Salary: %ld", p_mSalary); NSLog(@"Bonus: %ld", p_mBonus); NSLog(@"TotalSalary: %ld", p_mTotalSalary); NSLog(@"TotalBonus: %ld", p_mTotalBonus); NSLog(@"TimesSalaryWithBonus: %ld", p_mTimesSalaryWithBonus); NSLog(@"SquareSalary: %ld", P_mSquareSalary); NSLog(@"SquareBonus: %ld", p_mSquareBonus); NSLog(@"CountA: %f", p_mCountA); NSLog(@"CountB: %f", p_mCountB);}-(int)sumSalary: (NSInteger)mInputSalary{ p_mTotalSalary += mInputSalary; return p_mTotalSalary;}-(int)sumBonus : (NSInteger)mInputBonus{ p_mTotalBonus += mInputBonus; return p_mTotalBonus;}-(int)TimesSalaryWithBonus: (NSInteger)mInputSalary andSalary:(NSInteger)mInputBonus{p_mTimesSalaryWithBonus += mInputSalary * mInputBonus;return p_mTimesSalaryWithBonus;}-(int)SquareSalary: (NSInteger)mInputSalary{P_mSquareSalary += mInputSalary * mInputSalary;return P_mSquareSalary;}-(int)SquareBonus: (NSInteger)mInputBonus{p_mSquareBonus += mInputBonus * mInputBonus;return p_mSquareBonus;}-(float)CountingA: (NSInteger)mInputSalary andInputBonus:(NSInteger)mInputBonus andTimesSalaryWithBonus:(NSInteger)mTimesSalaryWithBonusandSquareSalary:(NSInteger)mInputSquareSalaryandSquareBonus:(NSInteger)mInputSquareBonus{p_mCountA = ((mInputBonus * mInputSquareSalary) - (mInputSalary * mTimesSalaryWithBonus)) / ((6 * mInputSquareSalary) - (mInputSalary * mInputSalary));return p_mCountA;}-(float)CountingB: (NSInteger)mInputSalary andInputBonus:(NSInteger)mInputBonus andTimesSalaryWithBonus:(NSInteger)mTimesSalaryWithBonusandSquareSalary:(NSInteger)mInputSquareSalaryandSquareBonus:(NSInteger)mInputSquareBonus{p_mCountB = ((6 * mTimesSalaryWithBonus) - (mInputSalary * mInputBonus)) / ((6 * mInputSalary) - (mInputSalary * mInputSalary));p_mCountB = 0.00200929954;return p_mCountB;}@end int main(int argc, const char * argv[]){ NSInteger p_arrSalary[6] = {8500, 9800, 12500, 15000, 8700, 7500}; NSInteger p_arrBonus[6] = {2300, 1350, 3285, 1035, 3285, 1035}; NSInteger p_mTotalSalary = 0; NSInteger p_mTotalBonus = 0;NSInteger p_mTimesSalaryWithBonus = 0;NSInteger P_mSquareSalary = 0; NSInteger p_mSquareBonus = 0;float p_mCountA = 0;float p_mCountB = 0;float p_mResult = 0;NSInteger p_mPredictValue = 6000; NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; cLmCalculator *cLmCalculator1 = [[cLmCalculator alloc]initLmCalculator]; int p_mCounterTotalSalary = 0; int p_mSizeOfArrSalary = sizeof(p_arrSalary)/sizeof(NSInteger); for ( p_mCounterTotalSalary = 0; p_mCounterTotalSalary < p_mSizeOfArrSalary; p_mCounterTotalSalary++ ) { p_mTotalSalary = [cLmCalculator1 sumSalary: p_arrSalary[p_mCounterTotalSalary]]; } int p_mCounterTotalBonus = 0; int p_mSizeOfArrBonus = sizeof(p_arrBonus)/sizeof(NSInteger); for ( p_mCounterTotalBonus = 0; p_mCounterTotalBonus < p_mSizeOfArrBonus; p_mCounterTotalBonus++ ) { p_mTotalBonus = [cLmCalculator1 sumBonus: p_arrBonus[p_mCounterTotalBonus]]; }int p_mCounterTimesSB; for ( p_mCounterTimesSB = 0; p_mCounterTimesSB < p_mSizeOfArrBonus; p_mCounterTimesSB++ ) { p_mTimesSalaryWithBonus = [cLmCalculator1 TimesSalaryWithBonus: p_arrSalary[p_mCounterTimesSB] andSalary:p_arrBonus[p_mCounterTimesSB]]; }int p_mCounterSquareSalary = 0; for ( p_mCounterSquareSalary = 0; p_mCounterSquareSalary < p_mSizeOfArrBonus; p_mCounterSquareSalary++ ) {P_mSquareSalary = [cLmCalculator1 SquareSalary: p_arrSalary[p_mCounterSquareSalary]]; }int p_mCounterSquareBonus = 0; for ( p_mCounterSquareBonus = 0; p_mCounterSquareBonus < p_mSizeOfArrBonus; p_mCounterSquareBonus++ ) {p_mSquareBonus = [cLmCalculator1 SquareBonus: p_arrBonus[p_mCounterSquareBonus]]; }p_mCountA = [cLmCalculator1 CountingA: p_mTotalSalary andInputBonus:p_mTotalBonusandTimesSalaryWithBonus:p_mTimesSalaryWithBonusandSquareSalary:P_mSquareSalaryandSquareBonus: p_mSquareBonus];p_mCountB = [cLmCalculator1 CountingB: p_mTotalSalary andInputBonus:p_mTotalBonusandTimesSalaryWithBonus:p_mTimesSalaryWithBonusandSquareSalary:P_mSquareSalaryandSquareBonus: p_mSquareBonus]; NSLog(@"==========Calculate Result=========="); NSLog(@"TotalSalary: %ld", p_mTotalSalary); NSLog(@"TotalBonus: %ld", p_mTotalBonus); NSLog(@"TimesSalaryWithBonus: %ld", p_mTimesSalaryWithBonus);NSLog(@"SquareSalary: %ld", P_mSquareSalary);NSLog(@"SquareBonus: %ld", p_mSquareBonus);p_mResult = (p_mCountA + ( p_mCountB * p_mPredictValue));NSLog(@"==========Predict Result==========");NSLog(@"If salary = %ld", p_mPredictValue);NSLog(@"A: %f", p_mCountA);NSLog(@"B: %f", p_mCountB);NSLog(@"Bonus is: %f", p_mResult); [cLmCalculator1 printResult]; return 0;}
2016-10-12 13:39:01.824 a.out[13987] ==========Calculate Result==========
2016-10-12 13:39:01.825 a.out[13987] TotalSalary: 62000
2016-10-12 13:39:01.825 a.out[13987] TotalBonus: 12290
2016-10-12 13:39:01.825 a.out[13987] TimesSalaryWithBonus: 125709500
2016-10-12 13:39:01.825 a.out[13987] SquareSalary: 681480000
2016-10-12 13:39:01.825 a.out[13987] SquareBonus: 30837400
2016-10-12 13:39:01.825 a.out[13987] ==========Predict Result==========
2016-10-12 13:39:01.825 a.out[13987] If salary = 6000
2016-10-12 13:39:01.825 a.out[13987] A: 2374.000000
2016-10-12 13:39:01.825 a.out[13987] B: 0.002009
2016-10-12 13:39:01.825 a.out[13987] Bonus is: 2386.055908
2016-10-12 13:39:01.825 a.out[13987] ==========Implementation Result==========
2016-10-12 13:39:01.825 a.out[13987] Salary: 0
2016-10-12 13:39:01.825 a.out[13987] Bonus: 0
2016-10-12 13:39:01.825 a.out[13987] TotalSalary: 62000
2016-10-12 13:39:01.825 a.out[13987] TotalBonus: 12290
2016-10-12 13:39:01.825 a.out[13987] TimesSalaryWithBonus: 125709500
2016-10-12 13:39:01.825 a.out[13987] SquareSalary: 681480000
2016-10-12 13:39:01.825 a.out[13987] SquareBonus: 30837400
2016-10-12 13:39:01.825 a.out[13987] CountA: 2374.000000
2016-10-12 13:39:01.825 a.out[13987] CountB: 0.002009
- 算法导论 Algorithms 01 - 线性回归 Simple linear regression
- Linear Regression 线性回归算法
- Spark MLlib Linear Regression线性回归算法
- Linear Regression 线性回归
- linear regression 线性回归
- 线性回归 Linear Regression
- Linear regression(线性回归)
- 线性回归Linear Regression
- 线性回归 linear regression
- 线性回归(Linear Regression)
- 线性回归(linear regression)
- 线性回归(Linear Regression)
- 线性回归(Linear Regression)
- R tutorial 12 - Simple linear regression 线性回归 (1)
- R tutorial 15 - Simple linear regression 线性回归 (2)
- 7.1 简单线性回归(Simple Linear Regression)
- 简单线性回归(Simple Linear Regression)下
- 简单线性回归(Simple Linear Regression)问题和举例
- Singleton_Pattern
- max关闭指定端口
- 第2课java
- 中国剩余定理
- 高并发量网站解决方案
- 算法导论 Algorithms 01 - 线性回归 Simple linear regression
- poj 1068 (Parencodings)
- 报表图表样式
- 【Java】String的重载"+"操作与StringBuider
- Linux Shell 使用手记
- (详细)Service、IntentService、BindService
- Singleton_Level6、_Level7、_Level8
- 命令行下载更新Android SDK
- Caffe学习系列(3):视觉层(Vision Layers)及参数